Php $sql变量导致mysql_fetch_array()期望参数1是资源
我在php中有一个搜索表单,当用户输入要搜索的名称时,表单调用以下php代码以给出结果。我的问题是,这段代码在执行时给了我“mysql\u fetch\u array()期望参数1是资源,布尔给定”。如果我将$sql更改为类似于用户的Php $sql变量导致mysql_fetch_array()期望参数1是资源,php,Php,我在php中有一个搜索表单,当用户输入要搜索的名称时,表单调用以下php代码以给出结果。我的问题是,这段代码在执行时给了我“mysql\u fetch\u array()期望参数1是资源,布尔给定”。如果我将$sql更改为类似于用户的$sql=“SELECT`name`、`name`、`email`、`user\u id`之类的内容,那么它就可以正常工作了。你知道这可能是我的问题所在,以及如何继续 //more code $start=0; $per_page=10; $page=1; $
$sql=“SELECT`name`、`name`、`email`、`user\u id`之类的内容,那么它就可以正常工作了。你知道这可能是我的问题所在,以及如何继续
//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'];
}
您正在生成一个无效的查询
$sql = "...LIKE '$name%') LIMIT 100 ";
$sql .= "LIMIT $start, $per_page";
…将生成2个LIMIT
子句并导致语法错误。当您出现语法错误且未检查mysql\u query
的返回值时,您将在问题中收到错误消息,因为您无法返回结果。如果您使用
$result = mysql_query($sql) or die(mysql_error());
…您将有一个错误提示作为错误消息。您正在生成一个无效查询
$sql = "...LIKE '$name%') LIMIT 100 ";
$sql .= "LIMIT $start, $per_page";
…将生成2个LIMIT
子句并导致语法错误。当您出现语法错误且未检查mysql\u query
的返回值时,您将在问题中收到错误消息,因为您无法返回结果。如果您使用
$result = mysql_query($sql) or die(mysql_error());
…您将有一个错误提示作为错误消息。看起来您的LIMIT语句重复了两次。第一行以LIMIT 100
结尾,下一行添加LIMIT$start$per_page
,这将导致如下结果:
LIMIT 100 LIMIT 0,10
您的LIMIT语句似乎重复了两次。第一行以LIMIT 100
结尾,下一行追加LIMIT$start$per\u page
,结果如下:
LIMIT 100 LIMIT 0,10
这是因为您的查询失败。为什么不放置一个或死(mysql\u error())来捕获错误
做这样的事
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($run = mysql_fetch_array($result)){
$surname = $run['surname'];
}
正如@Mike所指出的,您有一个语法错误,==>2倍限制这是因为您的查询失败了。为什么不放一个或死(mysql_error())来捕获错误呢
做这样的事
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($run = mysql_fetch_array($result)){
$surname = $run['surname'];
}
正如@Mike指出的,您有一个语法错误,==>2倍限制您在查询中使用了两次限制
,请删除任何一个。有关如何解决此问题,请参阅。检查错误消息echo mysql\u errno($link)。“:”。mysql\u error($link)。“\n";供参考。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,。您在查询中使用了两次LIMIT
,请删除任何一个。有关如何解决此问题,请参阅。检查错误消息echo mysql\u errno($link)。": " . mysql\u错误($link)。“\n”;供参考。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果你选择PDO,。哦,我明白了,我这样使用限制2次…哦,我明白了,我这样使用限制2次。。。