connect_error) { die("Connection failed: " . $co-6ren">
gpt4 book ai didi

php - 如何将 fetch_assoc 中的键作为字符串返回,以便数组可以是有效的 JSON 数据? (PHP/mysqli)

转载 作者:行者123 更新时间:2023-12-02 05:20:56 24 4
gpt4 key购买 nike

这是我的功能:

<?php   

function getResults($query) {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$conn->set_charset("utf8");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query($query);
if ($result) {
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
return $rows;
} else {
return mysqli_error($conn);
}
}

?>

我在这里使用它:

if ($_POST["action"] == "getCitiesByState") {
$cities = getResults("SELECT * FROM tbl_cidades WHERE estado_id = ".$_POST["state_id"]);
echo json_encode($cities, JSON_UNESCAPED_UNICODE);
die();
}

输出:

{id: "8853", estado_id: "26", nome: "Adamantina", cep: "17800000", loc_no_abrev: "Adamantina"},…]

id、estado_id、nome 等均未加引号,构成无效的 JSON 数据。如何将它们作为字符串返回,以便它们成为有效的 JSON?

这是 var_dump($cities) 的输出示例之一

array(1) { [0]=> array(5) { ["id"]=> string(4) "1778" ["estado_id"]=> string(1) "7" ["nome"]=> string(9) "Brasília" ["cep"]=> string(0) "" ["loc_no_abrev"]=> string(9) "Brasília" } }

最佳答案

Unicode 文本可能有问题;尝试按如下方式修改您的数据库代码:

function getResults($query) {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$conn->set_charset("utf8");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query($query);
if ($result) {
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = array_map("utf8_encode", $row);
}
return $rows;
} else {
return mysqli_error($conn);
}
}

(顺便说一下,每次查询都重新连接到数据库会引入大量开销。)

关于php - 如何将 fetch_assoc 中的键作为字符串返回,以便数组可以是有效的 JSON 数据? (PHP/mysqli),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34166340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com