首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$sql变量导致mysql_fetch_array()要求参数1为资源

问$sql变量导致mysql_fetch_array()要求参数1为资源
EN

Stack Overflow用户
提问于 2013-07-08 21:20:51
回答 3查看 86关注 0票数 0

我在php中有一个搜索表单,当用户输入要搜索的名称时,表单调用以下php代码来给出结果。我的问题是,这段代码在执行时会告诉我"mysql_fetch_array()期望参数1是资源,给定的是布尔值“。如果我将$sql改为像$sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users这样的东西,那么它工作得很好。你知道这可能是我的问题所在以及如何继续前进吗?

代码语言:javascript
复制
//more code

$start=0;
$per_page=10;
$page=1;

 $sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users WHERE (surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE '$surname%' AND name LIKE '$name%') LIMIT 100 ";

 $sql .= "LIMIT $start, $per_page";

 $result = mysql_query($sql);

  while($run = mysql_fetch_array($result)){
      $surname = $run['surname'];
  }
EN

回答 3

Stack Overflow用户

发布于 2013-07-08 21:23:42

您正在生成无效的查询;

代码语言:javascript
复制
$sql = "...LIKE '$name%') LIMIT 100 ";
$sql .= "LIMIT $start, $per_page";

...will生成2个LIMIT子句并导致语法错误。当你得到一个语法错误并且没有检查mysql_query的返回值时,你会在你的问题中得到错误消息,因为你没有得到结果。如果使用;检查返回值;

代码语言:javascript
复制
$result = mysql_query($sql) or die(mysql_error());

...您应该已经有了错误消息的指示。

票数 2
EN

Stack Overflow用户

发布于 2013-07-08 21:23:50

看起来您重复了两次LIMIT语句。第一行以LIMIT 100结束,在下一行追加LIMIT $start, $per_page,结果如下:

LIMIT 100 LIMIT 0,10

票数 1
EN

Stack Overflow用户

发布于 2013-07-08 21:25:47

发生这种情况是因为查询失败。为什么不放一个或die(mysql_error());来捕获错误呢?

做一些这样的事情

代码语言:javascript
复制
if($result === FALSE) {
    die(mysql_error()); // TODO: better error handling
}

while($run = mysql_fetch_array($result)){
    $surname = $run['surname'];
}

正如@Mike指出的,你有一个语法错误,== >2倍限制

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

https://stackoverflow.com/questions/17527746

复制
相关文章

相似问题

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