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是一种资源吗?写在哪里?