Php 从数据库编码json

Php 从数据库编码json,php,mysql,json,Php,Mysql,Json,我知道这个问题已经被问了几千次了,但我还是无法理解。接下来:我想将我的数据库数据编码成json 我让我的代码在旧版本的php下工作,使用msql_connect等代替mysqli。 我昨天更新了服务器,但我无法让它与mysqli一起工作 这是我的代码,不返回任何内容,不返回null,不返回空括号,不返回任何内容 <?php $mysqli = new mysqli("$host", "$username", "$password","$db_name"); $myQuery = "SELE

我知道这个问题已经被问了几千次了,但我还是无法理解。接下来:我想将我的数据库数据编码成json

我让我的代码在旧版本的php下工作,使用msql_connect等代替mysqli。 我昨天更新了服务器,但我无法让它与mysqli一起工作

这是我的代码,不返回任何内容,不返回null,不返回空括号,不返回任何内容

<?php
$mysqli = new mysqli("$host", "$username", "$password","$db_name");
$myQuery = "SELECT * FROM myTable ORDER BY date DESC LIMIT 4";
$result = $mysqli->query($myQuery);

$data = array();

while($row = mysqli_fetch_assoc($result)) {
    $data['nameOfArray'][] = $row;
}
echo json_encode($data);

$mysqli->close();
?>
奇怪的是,我让ik使用旧方法正常工作,我删除了旧方法(老实说,这很愚蠢)

希望这里有人能给我指出正确的方向。 先谢谢你

编辑: 当我进行打印时,我看到了数据,所以这与将其编码为json有关,mysql位是corect。我还使用jsonSerializer找到了一些答案,但我无法想象它会如此困难,而以前它非常简单。

试试这个

<?php
$mysqli = new mysqli("$host", "$username", "$password","$db_name");
$myQuery = "SELECT * FROM myTable ORDER BY date DESC LIMIT 4";
$result = $mysqli->query($myQuery);

$data = array();


while($row = $result->fetch_assoc()) {
    $data['nameOfArray'][] = $row;
}
echo json_encode($data);

$mysqli->close();
?>

虽然这个问题很老,但可能会帮助其他陷入类似问题的人。 当您将mysql代码更改为mysqli代码时,这是一个常见的错误。 在过程调用mysqli\u fetch\u assoc()时,您无法传递连接变量。 像这样的东西会有用的

<?php
$mysqli = new mysqli("$host", "$username", "$password","$db_name");
$myQuery = "SELECT * FROM myTable ORDER BY date DESC LIMIT 4";
$result = $mysqli->query($myQuery);

$data = array();

while($row = mysqli_fetch_assoc($mysqli, $result)) {
$data['nameOfArray'][] = $row;
}
echo json_encode($data);

$mysqli->close();
?>


第一步,打开。另外,与其盲目地假设查询执行成功,不如检查返回值。使用MySQLi错误处理函数。您在获取结果时出现了错误。请参阅答案Agree with@AmalMurali。您应该检查mysqli连接是否没有失败,以及您的查询是否没有失败。调用
newmysqli()
后,也许您应该将下一部分包装在
if($mysqli){…}
中,以确保连接成功;如果没有,请查看
mysqli\u connect\u error()
。类似地,您应该检查
if($result){…}
以确保查询成功;如果没有,请查看
mysqli\u error()
。首先:感谢您的反应。但打印结果正确显示了我的数据。当然,我会检查并捕获错误,但现在,我只是得到了最小的粘贴值,因此您可以轻松理解它并提供帮助。
mysqli\u fetch\u assoc($result)
$result->fetch\u assoc()同义。两者都可以使用。OP在那里没有犯错误。这里有一个再次查看链接的链接有两个示例,一个是
simple mysqli*
函数,另一个是as object
mysqli
。在op查询中,他在
$result
@alvinley中使用对象和分配对象都有不同的样式
面向对象的
过程的
都是面向对象的样式
mysqli::query()
和过程样式
mysqli_query()
返回相同类型的数据-对象。从那里,您可以使用面向对象的样式
mysqli\u result::fetch\u assoc()
,也可以使用过程样式并将对象作为参数传递给
mysqli\u fetch\u assoc()
。两者将产生相同的结果。诚然,OP在混合使用面向对象和过程风格方面可能并不一致,但这种不一致不会导致错误。感谢迄今为止的反应。事实上,我意识到当我粘贴代码时,它是不一致的,我尝试了两种方法,这是由于尝试了很多。
<?php
$mysqli = new mysqli("$host", "$username", "$password","$db_name");
$myQuery = "SELECT * FROM myTable ORDER BY date DESC LIMIT 4";
$result = $mysqli->query($myQuery);

$data = array();

while($row = mysqli_fetch_assoc($mysqli, $result)) {
$data['nameOfArray'][] = $row;
}
echo json_encode($data);

$mysqli->close();
?>