【问题标题】:json_encode with MySQL array带有 MySQL 数组的 json_encode
【发布时间】:2014-03-02 00:41:15
【问题描述】:

我正在从我的 MySQL 中获取一个包含值的数组,并且我正在尝试对其进行 json_encode()。 但是没有输出,什么都没有。只是一个白屏,没有错误,什么都没有。有任何想法吗? 数组 $rows 完美地填充了值。

if (!$connection = mysqli_connect($db_host, $db_user, $db_pw, $db))
    die( "Connection not successful.\n" );

$sql_qry = "SELECT * FROM `table`;";
if (!$result = mysqli_query($connection, $sql_qry))
    echo "Wasn't able to send query: ".mysqli_error($connection)."\n";

while ($rows[] = mysqli_fetch_assoc($result));

mysqli_close($connection);

echo json_encode($rows);

【问题讨论】:

  • 你怎么知道它完全充满了价值观?
  • 还要检查 Web 服务器的日志是否有错误...
  • 只是一个提示:使用 'SET NAMES UTF8' 将传输字符集设置为 utf8
  • 我想你需要使用:$rows = array(); while ($rows[] = mysqli_fetch_assoc($result)) ; 所以行将被正确初始化
  • 我知道它充满了值,因为我使用 var_dump($rows) 来检查它。

标签: php json output


【解决方案1】:

您的while 分配实际上并未迭代结果集并将SQL 查询中的现有行分配给该变量。如果您希望在 while 语句范围之外访问返回结果集的全部内容,那么您需要遍历结果集并将每一行分配给在您的 while 语句执行之前定义的数组:

$rows = array();
while ($ret = mysqli_fetch_assoc($result)):
    $rows[] = $ret;
endwhile;

mysqli_close($connection);

echo json_encode($rows);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2018-09-06
    • 1970-01-01
    相关资源
    最近更新 更多