StackOverflow上有很多这样的例子,但我在代码中看不到错误。我遵循了一些教程,并在这个论坛上复制了一些代码,但仍然存在错误错误。
我的CREATE TABLE
查询:
CREATE TABLE `e1_ENGLISH` (
`entry_id` int(11) NOT NULL AUTO_INCREMENT,
`words_e1` char(30) NOT NULL,
`date` date DEFAULT NULL,
`phonetic_e1` varchar(50) NOT NULL,
PRIMARY KEY (`entry_id`)
) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb4
我的PHP代码:
<?php
// establish connection
// mysqli contect (host, user, pass, db)
$conn = mysqli_connect("localhost","androidapp","password","myDB");
// check for connection success
if(!$conn) {
die("Error, could not connect: " . mysqli_connect_error());
}
// build query
$sql = "SELECT * FROM e1_ENGLISH";
$result = mysqli_query($conn, $sql); // fetch data
// convert result to array
$resArray = array();
while ($row = mysqli_fetch_assoc($result)) {
//$resArray[] = $row;
$resArray[] = utf8_encode($row);
}
// display result
echo json_encode($resArray);
// close connection
mysqli_close($conn);
?>
我得到的输出(utf8_encode
):
[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]
我得到一个只有$resArray[] = $row;
我是PHP,MySQL数据和网络服务器的新手。你能发现什么错误吗?另外,我没有脚本或任何东西,这是直接的PHP。
提前谢谢!
答案 0 :(得分:2)
你可以尝试通过数组中的记录来获取这样的数据,并且json_encode数组,其中name和last_name是数据库中行的名称
$res_array = array();
while($row = $result->mysqli_fetch_assoc()) {
$single_record = array(
"NAME_U_WANT1" => $row['NAME'],
"NAME_U_WANT2" => $row['LAST_NAME'],
);
array_push($res_array, $single_record);
}
return json_encode($res_array);
如你所见,你必须循环他们的行
答案 1 :(得分:2)
utf8_encode()
的参数必须是一个字符串,你不能在数组上调用它。你需要遍历$row
在每个元素上调用它。
$resArray = array();
while ($row = mysqli_fetch_assoc($result)) {
foreach ($row as &$val) {
$val = utf8_encode($val);
}
$resArray[] = $row;
}
答案 2 :(得分:2)
utf8_encode()
需要一个字符串。使用array_map()
:
while ($row = mysqli_fetch_assoc($result)) {
$resArray[] = array_map('utf8_encode', $row);
}
echo json_encode($resArray);