쿼리를 처리하는 하나의 PHP 파일에서 많은 수의 조인과 하위 쿼리가있는 쿼리가 있다고 가정 해 봅니다. Nb를 : 나는 $ 쿼리가 HTML을 처리하는 내 PHP 파일에서 다음 바닥조건부 쿼리를 사용한 쿼리
$query = query here;
if ($query) {
return $query->result();
} else {
return false;
}
}
에서 어떻게 생겼는지의 예를 넣어, 내가 예컨대 다른 쿼리을 필요로하는 일부 조건에 보통 foreach 루프를 가지고; 참고 : result house 객체 $ query-> result().
foreach ($results as $item) {
$some_array = array();
$some_id = $item->id;
if ($some_id != 0) {
//id_return_other_id is a function that querys a db table and returns the specified column in the same table, it returns just one field
$other_id = id_return_other_id($some_id);
$some_query = another query that requires some joins and a subquery;
$some_array = the values that are returned from some_query in an array
//here i'm converting obj post into an array so i can merge the data in $some_array to item(Which was converted into an array) then convert all of it back into an object
$item = (object)array_merge($some_array, (array)$item);
}
//do the usual dynamic html stuff here.
}
이 완벽하게 작동하지만 난 루프에서 많은의 쿼리를하고 있어요 방식을 좋아하지 않기 때문에, 쿼리를 처리하는 파일의 경우 $ SOME_ID! = 0을 추가하는 방법이 있나요? 내가
$query = query here;
//declaring some array as empty when some_id is 0
$some_array = array();
if ($query) {
if ($some_id != 0) {
//same as i said before
$other_id = $this->id_return_other_id($some_id);
$some_query = some query;
$some_array = array values gotten from some query;
}
$qresult = (object)array_merge($some_array, (array)$query->result);
return $qresult;
} else {
return false;
}
}
이것은 분명한 이유가 작동하지 않습니다 시도했습니다, 하나는 어떤 아이디어가 있습니까?
또한 $ 쿼리 자체에서 이러한 조건과 쿼리를 만드는 방법이 있다면 나는 당신을 영원히 사랑할 것입니다.
시 : 데모 쿼리는
$sql = "SELECT p.*,up.*,upi.someField,etc..
FROM (
SELECT (another subquery)
FROM table1
WHERE table1_id = 3
UNION ALL
SELECT $user_id
) uf
JOIN table2 p
ON p.id = uf.user_id
LEFT JOIN table3 up
ON .....
LEFT JOIN table4
ON ....
LEFT JOIN table5
ON ....
And so on..etc..
ORDER BY p.date DESC";
$query = mysql_query..
[** 새 코드 **에서 mysql_ * 함수를 사용하지 마십시오 (http://bit.ly/phpmsql). 그들은 더 이상 유지 관리되지 않으며 [비추천 프로세스] (http://j.mp/Rj2iVR)가 시작되었습니다. [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 튜토리얼입니다] (http://j.mp/PoWehJ). – Neal
감사합니다 닐, 내가 실제로 mysql_ persay를 사용하지 않았고, 나는 적극적인 레코드를 사용하고 있습니다. 그저 내가 의미하는 바를 설명하기 위해 거기에 넣었습니다. 내가 갖고있는 문제에 대해 어떻게 생각하는지 알고 있습니까? – Saff