首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP,MYSQL -查询失败,但没有出现错误消息

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

Stack Overflow用户
提问于 2012-04-12 21:07:26
回答 3查看 2.2K关注 0票数 2

再说一次,谢谢你上次的帮助。我正在运行这个查询:

代码语言:javascript
复制
 $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))。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-12 21:09:50

这是一种过于谨慎的情况,并在不属于它的地方应用错误检查。

不要与fetch调用一起调用die()。当没有可用行时,fetch有意返回FALSE,因此没有错误,只是没有行。

代码语言:javascript
复制
// No rows were returned, wich is FALSE
$row = mysql_fetch_array($result) or die('Error 2:'.mysql_error());

相反,不要在这里调用die():

代码语言:javascript
复制
$row = mysql_fetch_array($result);
if ($row) {
  // you got something
}

或者这样:

代码语言:javascript
复制
if ($row = mysql_fetch_array($result)) {
  // you got something.
}

如果期望返回多个行,则在while循环中进行fetch。

代码语言:javascript
复制
while ($row = mysql_fetch_array($result)) {
  // loops until you're out of rows
  // or not at all if you have no rows
}
票数 2
EN

Stack Overflow用户

发布于 2012-04-12 21:09:41

在查询字段中应用单引号

代码语言:javascript
复制
 $query = "SELECT * FROM event where evLoc = '".$loc."' AND evChar = '".$char."'";

你也可以用简写的形式来写这些。喜欢

代码语言:javascript
复制
$query = "SELECT * FROM event where evLoc = '$loc' AND evChar = '$char'";

接下来,您可能想要更改获取部分。

代码语言:javascript
复制
while($row = mysql_fetch_assoc($result)) { 
 ....
}

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

票数 2
EN

Stack Overflow用户

发布于 2012-04-12 21:10:01

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10124213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档