再说一次,谢谢你上次的帮助。我正在运行这个查询:
$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))。
发布于 2012-04-12 21:09:50
这是一种过于谨慎的情况,并在不属于它的地方应用错误检查。
不要与fetch调用一起调用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循环中进行fetch。
while ($row = mysql_fetch_array($result)) {
// loops until you're out of rows
// or not at all if you have no rows
}发布于 2012-04-12 21:09:41
在查询字段中应用单引号
$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-12 21:10:01
显然,您的请求返回0行,mysql_fetch_array返回FALSE
https://stackoverflow.com/questions/10124213
复制相似问题