我正在尝试使用从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代码返回为空。有什么我做错了吗?我很确定我是。
答案 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");
连接后。