저는 JSON 파일에서 가져온 키를 사용하여 mysql 데이터베이스에서 값을 조회하려고합니다. 여기서 볼 수 있듯이,MySQLi 쿼리가 빈을 반환합니다.
SELECT `city` FROM `city_table` WHERE (CONVERT(`code` USING utf8) LIKE 'נגב 297')
phpMyAdmin에 결과를 반환 : PHP 코드 그러나 비어 반환 http://paulglushak.com/json/mysql_result.html
예를 들어, 쿼리의
<?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);
}
?>
하나는 : 현재이 코드입니다 . 내가 잘못하고있는 것이 있습니까? 나는 확신한다.
$query = "SELECT `city` FROM `city_table` WHERE (CONVERT(`code` USING utf8) LIKE '%".$code."%')";
을하지만 루프에서 SQL 쿼리를 만드는 조언을하지 않을 :
유니 코드 문자가 있습니다. 캐릭터가 그 과정에서 트랜스 코드 할 수없는 경우가 있습니다. 쿼리의 에코 결과가 정상입니까 (예상 한 것과 동일합니까)? – Raptor
mysqli를 prepared statement없이 사용하는 이유는 무엇입니까? .. http://php.net/manual/en/mysqli.prepare.php 당신의 코드는 MySQL 인젝션에 취약합니다. –
@VladimirHraban 틀린 개념. 준비된 문을 사용하지 않으면 SQL 인젝션 (MySQL 인젝션이 아님)에 취약하지 않습니다. 제대로 입력 데이터를 피할 수 주입 공격을 피할 수 있습니다. 자세한 정보는 준비된 명령문 문서를 읽으십시오. – Raptor