Php SQL警告:mysql\u real\u escape\u string()要求参数1为字符串
我使用以下查询:Php SQL警告:mysql\u real\u escape\u string()要求参数1为字符串,php,sql,Php,Sql,我使用以下查询: $search = mysql_query("SELECT * FROM `users` WHERE username LIKE '%".mysql_real_escape_string($query)."%' OR name LIKE '%".mysql_real_escape_string($query)."%' ORDER BY timestamp"); 其中$query是用户搜索的单词。我得到以下警告: 警告:mysql\u real\u escape\u strin
$search = mysql_query("SELECT * FROM `users` WHERE username LIKE '%".mysql_real_escape_string($query)."%' OR name LIKE '%".mysql_real_escape_string($query)."%' ORDER BY timestamp");
其中$query是用户搜索的单词。我得到以下警告:
警告:mysql\u real\u escape\u string()要求参数1为字符串
该表的用户名为varchar。这就是问题所在吗?或者,如果有人知道导致此警告的原因,是否可以帮助我?
$query
可能不是字符串(它可能是布尔或简单的整数)
这行前面可能有一些字符串
在查询之前尝试这样做
$query = (string) $query
然后它应该可以工作,因为它必须将$query转换为字符串$query
(变量)不是字符串。这是错误消息已经告诉您的简单答案
解决这个问题。请听错误消息所说的内容。它不涉及查询本身,但是/variable/如果$query是由用户输入提供的,您应该检查以确保它有一个值:
if(!is_null($query)) {
....
}
由于您没有显示太多代码,可能是您对$query的赋值失败,导致$query为空。我不认为这个错误是特定于字符串值类型的,它只是说那里什么都没有 什么是
$query
?我猜它不是一个字符串…var\u dump($query)
看看你得到了什么。怎么说var\u dump($query)
?我肯定它不是字符串。@develroot-我应该把这个语句(var_dump($query))放在哪里?在php脚本中?我想我知道问题是什么。查询的值为:Resource id#19我不确定从何处获取该值,我必须查看。我认为最好弄清楚为什么$query
不是字符串。@lonesomeday:因为它可能是intval()ed或其他什么?我的答案在任何情况下都能解决问题,这就是问题的关键所在question@lonesomeday:添加了更多信息,如问题更新所述,$query
是一种资源,无法使用(string)
将其转换为字符串。无论如何,我认为mysql\u real\u escape\u string
可以在内部处理整数。@lonesomeday:$query是一种资源吗?写在哪里?