0

この関数は失敗すると戻るはずですfalseが、私の場合は何も返さず、代わりにクラッシュします。

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

ここで、実際のクエリ文字列をエコーし​​、コマンドラインからmysqlにコピーして貼り付けると、有効なクエリになります。私が考えることができる唯一のことは、それが再帰クエリであるという事実に関係している可能性があり、$db->query2回続けて呼び出すことは無効である可能性があるということです。これが多かれ少なかれ私の流れです:

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" ));

これは無効ですか?どのように再編成する必要がありますか?

4

1 に答える 1

0

うわー、私はそのようなばかです。結局のところ、問題はスコープでした。つまり、$db再帰クエリ内からアクセスできませんでした。

于 2012-11-17T00:00:01.703 に答える