我有一个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版本中发现了同样的问题。