我在php中有一个搜索表单,当用户输入要搜索的名称时,表单调用以下php代码来给出结果。我的问题是,这段代码在执行时会告诉我"mysql_fetch_array()期望参数1是资源,给定的是布尔值“。如果我将$sql改为像$sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users这样的东西,那么它工作得很好。你知道这可能是我的问题所在以及如何继续前进吗?
//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'];
}发布于 2013-07-08 21:23:42
您正在生成无效的查询;
$sql = "...LIKE '$name%') LIMIT 100 ";
$sql .= "LIMIT $start, $per_page";...will生成2个LIMIT子句并导致语法错误。当你得到一个语法错误并且没有检查mysql_query的返回值时,你会在你的问题中得到错误消息,因为你没有得到结果。如果使用;检查返回值;
$result = mysql_query($sql) or die(mysql_error());...您应该已经有了错误消息的指示。
发布于 2013-07-08 21:23:50
看起来您重复了两次LIMIT语句。第一行以LIMIT 100结束,在下一行追加LIMIT $start, $per_page,结果如下:
LIMIT 100 LIMIT 0,10
发布于 2013-07-08 21:25:47
发生这种情况是因为查询失败。为什么不放一个或die(mysql_error());来捕获错误呢?
做一些这样的事情
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($run = mysql_fetch_array($result)){
$surname = $run['surname'];
}正如@Mike指出的,你有一个语法错误,== >2倍限制
https://stackoverflow.com/questions/17527746
复制相似问题