php - 从 PHP MySQL 连接获取 JSON

标签 php android mysql json

在 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/

相关文章:

android - 从 ListView 中获取选定的字符串

php - 从远程托管服务器加载数据库: phpmyadmin

php - 为什么我的 mysql 连接中有一个 "Invalid argument supplied for foreach"?

php - 一个元素在表格中重复了多少次

java - 使用更少的内存将 Bitmap 传递给 JNI

android - 适配器 getView() 内的 PopupMenu 不起作用

mysql - 导入数据库时​​如何忽略某些 MySQL 表?

mysql - 如何在 SELECT 查询中按两个 SUM/COUNT 的比率进行 ORDER?

php - ffmpeg 无法安装 PHP 扩展模块

php - MySQL 服务器在 PHP 中消失了