【问题标题】:multidimensional array filled with multiple sql answers填充了多个 sql 答案的多维数组
【发布时间】:2019-01-06 03:20:27
【问题描述】:

我想填充一个多维数组并将其从 php 发送到 js。

首先我执行 sql 查询

$query = "SELECT value1, value2, value3 FROM table WHERE id = '$id' LIMIT 10";
$value = mysqli_query($db, $query);

下一步是填充数组

    $data = array();
    $counter = 1;
    while($row = mysqli_fetch_assoc( $value )){
       $data[$counter] = array($row['value1'], $row['value2'], $row['value3']);
       $counter++;
    }

但是当我尝试用

测试输出时
echo "" . json_encode( $data , JSON_PRETTY_PRINT);

网站上没有显示任何内容

我在使用 print_r 进行 while 循环后得到这个正确的输出
{“1”:{“value1”:“52”,“value2”:“12”,“value3”:“821”},“2”:{“value1”:“52”,“value2”:“12” "} }

【问题讨论】:

  • 您的计数器应该从 0 开始,而不是 1。您可以尝试使用 print_r 而不是 json_encode 进行测试吗?另外,您确定您的查询正在返回行吗?
  • 是的,我测试了它,查询返回行。当我打印数组时,它返回正确的填充数组
  • 能发一下数据结构吗?我们无法运行您的查询,这听起来不是问题,因为您的 print_r 正在按预期工作,因此 minimal 示例将是 $data 的转储和对 json_encode 的调用产生不正确或没有输出。

标签: php json multidimensional-array


【解决方案1】:

为什么不使用mysqli_fetch_array

   $query = mysqli_query("SELECT value1, value2, value3 FROM table WHERE id = '$id' LIMIT 10";);
   $data = array();
   while($row = mysqli_fetch_array($query, MYSQL_ASSOC)){
   $data[] = $row;
   }
   echo json_encode($data, JSON_PRETTY_PRINT);

【讨论】:

  • 这适用于一个简单的数组。但是一旦我添加另一行(value2),我就没有结果
  • mysql_query 已弃用,请使用 mysqli_query。
  • mysql_fetch_array 也已弃用,请使用 mysqli_fetch_array
  • @TimFenil 您不需要在多维中按不同的值填充数组值
  • 是的,你是对的,它按你的方式工作,数组被正确填充,但我仍然无法通过 json_encode 得到它
猜你喜欢
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 1970-01-01
  • 2015-10-23
  • 2011-06-29
相关资源
最近更新 更多