我已经为我的网站的高级搜索写了一个mysqli语句。生成的查询不起作用。这是生成的查询:
SELECT title, stars, pic_main, id, province FROM ads WHERE 'province' = 8 AND( title LIKE %شریف% OR content LIKE %شریف% OR keywords LIKE %شریف% OR title LIKE %شریف%)
以下是我用来执行查询的代码:
if($transorder = $site_db->query($statement))
{
echo "True";
$i=0;
while($row_obj = $transorder->fetch_object())
{
$item[$i]['id'] = $row_obj->id;
$item[$i]['pic_main'] = $row_obj->pic_main;
$item[$i]['title'] = $row_obj->title;
$item[$i]['province'] = $row_obj->province;
$item[$i]['stars'] = $row_obj->stars;
$i++;
}
}
else
{
echo "False";
}
答案 0 :(得分:2)
您需要在LIKE语句中围绕文本引用,我还注意到您使用标题2次。如果您使用单引号(省),MySQL可能希望您将字符串'省'与值8
进行比较,您应该在'province'
周围使用`:
SELECT title, stars, pic_main, id, province
FROM ads
WHERE `province` = 8
AND ( title LIKE '%شریف%'
OR content LIKE '%شریف%'
OR keywords LIKE '%شریف%'
OR title LIKE '%شریف%')
要了解MySQL返回的错误,您可以使用echo $site_db->error;
。
解决方案
$site_con->set_charset("utf8");
由于使用了MySQL连接的无默认字符。因此,连接应设置为utf8