在 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。
提前致谢!
最佳答案
utf8_encode()
的参数必须是字符串,不能在数组上调用它。您需要遍历 $row
在每个元素上调用它。
$resArray = array();
while ($row = mysqli_fetch_assoc($result)) {
foreach ($row as &$val) {
$val = utf8_encode($val);
}
$resArray[] = $row;
}
关于php - 从 PHP MySQL 连接获取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154898/