PHP,MYSQL - 查询失败但没有出现错误消息

时间:2012-04-12 13:07:26

标签: php mysql

再次回来,感谢上次的所有帮助。我正在运行此查询:

 $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))没有打印。

3 个答案:

答案 0 :(得分: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)) { 
 ....
}

使用此功能时,您将避免在未返回任何行时收到的错误。

答案 1 :(得分: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
}

答案 2 :(得分:2)

显然,您的请求返回0行,mysql_fetch_array返回FALSE