mysqli查询语句不起作用

时间:2013-12-01 18:32:04

标签: php search

我已经为我的网站的高级搜索写了一个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";
}

1 个答案:

答案 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