MySQL 查询不适用于从 PHP 脚本传递的少数变量


mysql query not working for few variables passed from php script

我有一个php文件和一个数据库。

<?php
$con=mysqli_connect('localhost','xxxx','xxxxx','joomla30');
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$result = mysqli_query($con,"SELECT * FROM countries where continent_code='EU'") or die (mysqli_error($con));
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
      $orders[] = array(
          'CountryCode' => $row['countrycode'],
          'CountryName' => $row['countryname'],
          'Select' => $row['Select']
          );
  }
  echo json_encode($orders);
mysqli_close($con);
?>

我从 - http://www.geekality.net/2011/08/21/country-names-continent-names-and-iso-3166-codes-for-mysql/获取数据库文件

查询 - $query = "SELECT * FROM countries "; 不返回任何内容。
查询 - $query = "SELECT * FROM countries where continent_code='AS'";完美。
然而,$query = "SELECT * FROM countries where continent_code='EU'"; 不会返回任何内容。

同样,"NA","AF"不起作用,而其他工作完美。

注意:上述所有查询在phpmyadmin中都运行良好。

我不知道部分执行此查询的原因。期待一个明确的答案和更正。

更新:问题解决了。这是一个 json 问题。我将连接编码为 UTF-8,并且它现在可以正常工作。

你不应该使用本机函数mysql_...应使用 PDO

Example:
//Connect to DB
$Conexion = new PDO('mysql:dbname=my_db;host=localhost', 'UserDB', 'PasswordDB');
//Prepare query
$Data = $Conexion->prepare("SELECT * FROM countries");
//Execute query
$Data->execute();
//row Count
if($Data->rowCount()>=1) {
    $Array = $Data->fetchAll();
    //Process print data
    foreach ($Array AS $Key => $Value) {
        echo $Value['Column'];
    }
}
else {
    echo 'No Data';
}

我刚刚添加了mysql_set_charset( 'utf8',$connect);它现在工作正常。

尝试删除尾随空格(注意"国家")。 ---> 来自国家";我在旧的PHP版本中发现了同样的问题。