【问题标题】:One column table into an array一个列表到一个数组
【发布时间】:2016-09-22 03:10:18
【问题描述】:

我阅读了与我的问题相关的大部分帖子,但没有一个可以解决我的简单问题。

我正在使用 PHP 和 MySQLi 从我的服务器检索数据。

在我的数据库中,我有一个一维表(即只有一列),我想将其数据放入一个数组中。

到目前为止,我一直在使用 JSON 来保存来自服务器的数据。这是我的代码:

<?php
include 'ChromePhp.php';
$con=mysqli_connect("197.168.240.100","jsoncloud","nuahyu,hs","json");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
ChromePhp::warn('Failed to connect to MySQL');

  }

$sql="SELECT `street` FROM  `users` ";

$result=mysqli_query($con,$sql);

$rows = array();
while ($row = mysqli_fetch_all($result,MYSQLI_ASSOC)) {
    $rows[] = $row[0];

}
echo json_encode($rows);


// Free result set
mysqli_free_result($result);

mysqli_close($con);
?>

我的最终目标是回显数组,以便在另一个 JS 文件中将它与 Ajax 一起使用

在另一个 JS 文件中,我有以下代码:

$.ajax({
  type: 'POST',
  url: 'js/SQLusersstreets.php',
  dataType: 'json',
  success: function(jsonData) {
console.log(jsonData);
  },
  error: function() {
    alert('Error loading SQLusersstreets.php from GoogleMapsCode.js');
  }
});

这是我打开浏览器调试器时的输出:

我试图返回一个简单的数组,我做错了什么?

【问题讨论】:

  • 要打印出数组,您可以使用 print_r($yourArr)。我不知道它是否适用于 json_encode
  • 您是否遇到任何错误?请分享
  • 我想回显该数组,以便在另一个 JS 文件中将它与 Ajax 一起使用
  • 您的数据已经存储在一个数组中,如果要打印它使用 print_r($array),正如@A.Ilazi 所说。无论如何,您的问题似乎太模棱两可了?
  • 如果你写一些你现在得到的和你想得到的数据输出会很好。

标签: php html mysql arrays mysqli


【解决方案1】:

为 PDO 更改 mysqli

假设连接已经建立,你需要only one line of code:

echo json_encode($pdo->query("SELECT `street` FROM `users`")->fetchAll(PDO::FETCH_COLUMN));

但是如果你喜欢写很多代码,那就把 fetch_all 改成 fetch_assoc

【讨论】:

    【解决方案2】:

    试试这个,如果这是你要问的:

    for($i=0;$i<sizeof($rows);$i++){
    
         echo $rows[$i]['id']; //for example
    }
    

    【讨论】:

    • 谢谢,但这不是我要找的。​​span>
    • @Json 好的,没问题,但请详细描述你的问题,我没听懂
    • 在我的数据库中,我有一个一维表(即只有一列),我想把它的数据放在一个数组中。我需要在我的代码中更改什么?我需要替换“echo json_encode($rows);”与其他一些声明。
    • 数据已经在数组$rows中,如果print_r()函数不是你要找的,请看我更新的答案
    【解决方案3】:

    mysqli_fetch_all 是while($row = mysqli_fetch) {} 的快捷方式,所以可以跳过while 循环。

    $sql="SELECT DISTINCT `street` FROM  `users` ";
    
    $result=mysqli_query($con,$sql);
    
    $rows = mysqli_fetch_all($result,MYSQLI_ASSOC);
    echo json_encode(array_map(function($i) { return $i['street']; }, $rows));
    

    更多示例请参见此处的文档http://php.net/manual/en/mysqli-result.fetch-all.php

    【讨论】:

    • 这个更惨
    猜你喜欢
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    相关资源
    最近更新 更多