从PHP MySQL连接获取JSON

时间:2016-07-01 23:12:05

标签: 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。

提前谢谢!

3 个答案:

答案 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);