MySQLi Query返回空

时间:2014-07-15 10:39:53

标签: php json mysqli

我正在尝试使用从JSON文件获取的密钥在mysql数据库中查找值。 目前,这是代码:

<?php

$db = mysqli_connect('localhost', 'root', '', 'colorred');
if (mysqli_connect_errno()) {
     die(mysqli_connect_error());
}

$data = file_get_contents('http://paulglushak.com/json/test.json');
$parse = json_decode($data,true);
$time = date('l, d-M-Y H:i:s T', $parse['id']/1000);
$title = $parse['title'];

echo '<br><br>',$time,'<br>';
echo $title,'<br>';
if(!($parse['data']==null)) {
    foreach ($parse['data'] as $code) {
        $query = "SELECT `city` FROM `city_table` WHERE (CONVERT(`code` USING utf8) LIKE '".$code."')";
        echo 'The Query: ' .$query.'<br>';
        $result = mysqli_query($db, $query) or die('Error: '.mysqli_error($db));
        echo '<hr>';
        while($row = mysqli_fetch_assoc($result)) {
            echo $row;
            }
        }
    mysqli_close($db);
}


?>

例如,其中一个查询是:

SELECT `city` FROM `city_table` WHERE (CONVERT(`code` USING utf8) LIKE 'נגב 297')

phpmyadmin返回结果,如下所示:http://paulglushak.com/json/mysql_result.html

然而,PHP代码返回为空。有什么我做错了吗?我很确定我是。

2 个答案:

答案 0 :(得分:0)

您可能应该在自己的声明中使用通配符:

$query = "SELECT `city` FROM `city_table` WHERE (CONVERT(`code` USING utf8) LIKE '%".$code."%')";

但我不建议在循环中进行SQL查询。最好从循环中构建一个查询并运行一次。

答案 1 :(得分:0)

最后这是一个编码问题,所以感谢Raptor给我一个方向。

我尝试通过添加英文的临时mysql条目进行调试,然后直接查询,返回我正在寻找的值。这意味着希伯来字母是造成这个问题的字母。通过添加

解决了这个问题
mysqli_set_charset($db, "utf8");

连接后。