Php 被零除后,MySQL中出现“查询为空”错误
我试图为配置文件创建一个搜索引擎,但我存储了一个被零除的错误,在我使用var_dumpmysql_错误后,它显示我的查询是空的 以下是我的查询和php代码:Php 被零除后,MySQL中出现“查询为空”错误,php,mysql,sql,search-engine,Php,Mysql,Sql,Search Engine,我试图为配置文件创建一个搜索引擎,但我存储了一个被零除的错误,在我使用var_dumpmysql_错误后,它显示我的查询是空的 以下是我的查询和php代码: $search_rs = dbq('SELECT * FROM users WHERE fname LIKE '%$_GET[query]%' LIMIT 0, OR fname LIKE '%$_GET[query]%''); if($search_rs == false) {
$search_rs = dbq('SELECT * FROM users WHERE fname LIKE '%$_GET[query]%' LIMIT 0, OR fname LIKE '%$_GET[query]%'');
if($search_rs == false) {
var_dump(mysql_error());
}
elseif (db_num($search_rs) > 0) {
while ($results = db_next($search_rs)) {
echo('<li>
<a class="avatar" href="http://mysite/'.$results['pagekey'].'" target="_blank">
<img src="'.thumbnail($results['avatar'], 64, 64).'" />
</a>
<div class="info">
<a href="http://profiler.ir/'.$results['pagekey'].'" target="_blank">
<span class="fullname">'.$results['pre_name'].' '.$results['fname'].' '.$results['lname'].'</span>
</a>
</div>
</li> ');
}
}
else echo "not found !!!";
但是,当我删除LIKE“%$\u GET[query]”并在没有LIKE的情况下进行简单查询时,它会返回结果。MySQL错误是由错误的SQL文本引起的。代码中的问题是,由于用于解释/连接字符串的PHP语法,无法生成所需的SQL文本 我建议在字符串的文字部分使用双引号,并使用点运算符表示串联 我还建议您将字符串操作作为一个单独的步骤进行,以便SQL文本可用于检查/调试 我还强烈建议您在SQL文本中包含用户提供的数据时,使用mysql_real_escape_string函数来减少SQL注入漏洞 例如:
$sql = "SELECT * FROM users WHERE fname LIKE '%" . mysql_real_escape_string($_GET[query]) . "%'";
#vardump($sql); # for inspecting/debugging issues with generating SQL text
$search_rs = dbq($sql);
小Bobby表XKCD更改您的查询:
'SELECT * FROM users WHERE fname LIKE '%$_GET[query]%' LIMIT 0, OR fname LIKE '%$_GET[query]%''
为此:
"SELECT * FROM users WHERE fname LIKE '%" . $_GET['query'] . "%'"
你遇到的问题是:
对整个查询字符串以及其中类似的“…%”值使用单引号。现在使用双引号,将值连接起来。
您的$\u-GET[query]也缺少单引号,因此这些引号被更改为$\u-GET['query']。
限制0的位置没有任何意义,因此它已消失。
也不确定为什么有两个fname,如“%”$_获取['query'].%在那里。删除了第二个。
如果您不知何故需要限制,那么此查询应该可以工作:
"SELECT * FROM users WHERE fname LIKE '%" . $_GET['query'] . "%' LIMIT 0,100"
但我只是假设您需要100个项目,所以请更改该100以及0偏移量以最佳匹配您的需要。一旦您为查询正确地引用/连接字符串,这将起作用,您还将存在一个巨大的SQL注入漏洞。您不应仅转储代码,而应删除不必要的代码。