2012-11-16 46 views
0

這個函數在失敗時應該返回false,但在我的情況下,它沒有返回任何東西,而是崩潰。db->查詢在mysqli中崩潰php

echo "This gets printed" ; 
$x = $db->query("SELECT * FROM something WHERE id=123 AND name='abc'"); 
echo "This does not get printed"; 

現在,如果我回顯實際的查詢字符串,複製粘貼到命令行的mysql,它是一個有效的查詢。我能想到的唯一的事情就是它可能與它是一個遞歸查詢有關,並且連續調用$db->query兩次可能無效。這裏或多或少是我的流程:

function recursiveQuery ($result) 
{ 
    $temp = array(); 

    while ($row = $result->fetch_assoc()) 
    { 
     $temp [ 'name' ] = $row [ 'name' ]; 
     $id = $row [ 'id' ]; 
     $temp [ 'sub' ] = recursiveQuery ($db->query("SELECT * FROM something WHERE parent_id=$id")); 
    } 

    return $temp; 
} 

recursiveQuery ($db->query("SELECT * FROM something WHERE parent_id=0")); 

這是無效的嗎?我應該如何重組它?

+0

爲什麼不只是使用JOIN? – Scottymeuk

+0

它適用於文件夾,因此可以有無限數量的連接 – puk

+0

如果您在任何級別上都有不止一個項目,則您的函數將永遠不會返回預期結果。 – Arjan

回答

0

哇,我真是個傻瓜。原來,問題是範圍,即$db不可從內部遞歸查詢