【发布时间】:2017-03-24 03:46:29
【问题描述】:
我的项目有一点问题。结果发现,当名字或姓氏的值中包含“ñ”时,查询结果不返回任何内容。
这是我的代码
config.php:
<?php
ini_set('mssql.charset', 'UTF-8');
header('content-type: text/html; charset=utf-8');
$serverName = "192.168.1.21"; /* IP add of db Server */
$connection = array("Database" => "db", "UID" => "?", "PWD" => "***");
$conn = sqlsrv_connect($serverName, $connection);
if(!$conn){
echo "Connection could not be established.";
die(print_r(sqlsrv_errors(), true));
}
?>
我的查询:
$idnumber = $_POST["idnum"];
$response = array();
$query2 = "SELECT cLName, cFName, cMName, cQualifier FROM student WHERE cIDNO = '$idnumber'";
try{
$stmt2 = sqlsrv_query($conn, $query2);
}
catch(PDOExeption $ex){
$response["Success"] = 0;
$response["message"] = "Database Error!";
die(json_encode($response));
}
$row2 = sqlsrv_fetch_array($stmt2, SQLSRV_FETCH_ASSOC);
if($row2){
$response["Success"] = 1;
$response["message"] = "Data available";
$last_name = $row2["cLName"];
$first_name = $row2["cFName"];
$qualify = $row2["cQualifier"];
$first_name = html_entity_decode(htmlentities($first_name));
$last_name = html_entity_decode(htmlentities($last_name));
$name = $first_name." ".$last_name." ".$qualify;
$response["Name"] = $name;
echo json_encode($response);
}
else{
$response["Success"] = 0;
$response["message"] = "Database Error!";
die(json_encode($response));
}
但我不知道为什么我的程序会发生这种情况。
数据库中的示例: cLName = "Española", cFName = "Edgar", cQualifier = "Jr."
输出: "Name":"Edgar Jr."
同时: cLName = "Agustin", cFName = "Florence", cQualifier = "Jr."
输出:"Name":"Florence Agustin Jr."
想法?请问?
注意:我无权更改或更改数据库中的任何内容。
【问题讨论】:
-
您是否检查过
$first_name中是否存储了一个值 - 这样您就可以确定您的问题是否是从数据库中获取值(但看起来像那样)。 -
在搜索词前加 N。从 Tab1 中选择 *,其中 Col1 =N'YourColumn'
-
@Andreas 是的,我试过了。我为不同的 ID 尝试了很多试验,没有“ñ”的名称有一个值,而包含的名称没有值。我试过
echo它没有json_encode()它是一样的。 -
$last_name = utf8_encode($row2["cLName"]);解决了吗? -
@cske 我试过了。
cLName返回值,但有点奇怪。因为Lastname: Española .. Becomes: Espa\u00f1ola
标签: php sql-server json