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

时间:2013-11-12 18:30:40

标签: php mysql sql

我有一个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,现在正常工作。

3 个答案:

答案 0 :(得分:0)

你不应该使用本机函数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';
}

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

尝试删除尾随空格(请查看“国家/地区”)。 ---&GT;来自国家“; 我在旧的PHP版本中发现了同样的问题。