我遇到了mysqli选择查询的问题。 我正在使用的表称为参与者,并具有以下字段:
id int(11) AI PK
name varchar(255)
surname varchar(255)
birth varchar(32)
sex varchar(32)
email varchar(255)
telephone varchar(32)
club varchar(255)
startingGroup int(2)
这是一个PHP文件(名为select.php):
$connection = mysqli_connect("localhost", "$user", "$pass", "$db_name");
$query = "SELECT id, name, surname FROM participant WHERE NOT 0";
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if (!mysqli_query($connection, $query)) {
printf("Errormessage: %s\n", mysqli_error($connection));
}
$result = mysqli_query($connection, $query);
$arr = array();
if(mysqli_num_rows($result) != 0) {
while($row = mysqli_fetch_assoc($result)) {
$arr[] = $row;
}
}
mysqli_close($connection);
echo $json_info = json_encode($arr);
稍后由AngularJS调用:
$http.post("select.php").success(function(data){
console.log(data);
$scope.newparticipants = jsonFilter(data);
console.log($scope.newparticipants);
});
第一个console.log返回的值是' undefined'到第二个""。当我将查询更改为仅选择' id'整个工作和数据是可见的。有人猜到为什么会这样吗?
答案 0 :(得分:0)
在数据库中发生了一些用utf8_general_ci
编码的变音标记。我对发生的事情一无所知,因为有些查询是正确的,有些则没有。从特定范围中选择ID我收到了正确的结果。选择旁边的范围 - 我未定义。我发现很难发现问题出在编码上(只有一些行包含这些变音符号)。
如果您处于类似情况 - 请检查您的数据库是否存在某些非标准编码。如果是这样,只需在打开数据库连接后在代码中定义它,例如:
(程序式)
mysqli_set_charset($connection,"utf8");
(面向对象)
$mysqli->set_charset("utf8")
感谢大家尝试解决此问题。