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

我收到一条消息 Error 2: but no 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 调用合作调用。当没有可用行时,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 回答