1
//Execute query and fetch first row  
if ($qry=$db->query("SELECT statement")) {  
  if ($row=$qry->fetch_object()) {

  }  
}


//Same code as above using only one if statement
if ($qry=$db->query("SELECT statement") && $row=$qry->fetch_object()) {

}

コードの 2 番目のブロック (最初のブロックの代わりに実行した場合) が「非オブジェクトで関数 fetch_object を呼び出します」というエラーを生成するのはなぜですか?

4

1 に答える 1

1

これは、PHP が期待どおりに 2 番目のステートメントを解析していないためです。

それは次のように読んでいます:

if ($qry = ($db->query("SELECT statement") && $row = $qry->fetch_object()))

ご覧のとおり、これは が呼び出される$qry前に設定されることを意味します。fetch_object

ステートメントを で囲むようにしてください():

if (($qry=$db->query("SELECT statement")) && ($row=$qry->fetch_object()))
于 2013-02-26T20:37:08.450 に答える