2

繰り返しになりますが、前回はすべてのヘルプをありがとうございました。私はこのクエリを実行しています:

 $query = "SELECT * FROM event where evLoc = ".$loc." AND evChar = ".$char;
 var_dump($query);
 $result = mysql_query($query, $con) or die('Error 1:'.mysql_error());
 if ($result) {
    $row = mysql_fetch_array($result) or die('Error 2:'.mysql_error());
    var_dump(mysql_num_rows($result));
    exit();

エラー 2: というメッセージが表示されますが、mysql_error が出力されません。var_dump($query) は、phpMyAdmin でエラーなしで実行されたクエリを出力しました。var_dump(mysql_num_rows($result)) は出力されませんでした。

4

3 に答える 3

2

クエリのフィールドに一重引用符を適用する

 $query = "SELECT * FROM event where evLoc = '".$loc."' AND evChar = '".$char."'";

これらも短い形式で書くことができます。お気に入り

$query = "SELECT * FROM event where evLoc = '$loc' AND evChar = '$char'";

次に、フェッチ部分を変更することができます。

while($row = mysql_fetch_assoc($result)) { 
 ....
}

これを使用すると、行が返されない場合に発生するエラーを回避できます。

于 2012-04-12T13:09:40.923 に答える
2

これは、慎重になりすぎて、それが属していないエラー チェックを適用した場合です。

die()fetch 呼び出しと連携して呼び出さないでください。使用可能な行がない場合、フェッチは意図的に FALSE を返すため、行がないだけでエラーは発生しません。

// No rows were returned, wich is FALSE
$row = mysql_fetch_array($result) or die('Error 2:'.mysql_error());

die()代わりに、ここでは呼び出さないでください。

$row = mysql_fetch_array($result);
if ($row) {
  // you got something
}

またはこの方法:

if ($row = mysql_fetch_array($result)) {
  // you got something.
}

複数の行が返されることが予想される場合は、whileループでフェッチします。

while ($row = mysql_fetch_array($result)) {
  // loops until you're out of rows
  // or not at all if you have no rows
}
于 2012-04-12T13:09:50.457 に答える
2

明らかに、リクエストは 0 行を返し、mysql_fetch_array は FALSE を返します

于 2012-04-12T13:10:01.040 に答える