将一列表转换为数组

时间:2016-05-24 18:41:00

标签: php html mysql arrays mysqli

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

我使用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');
  }
});

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

Output

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

3 个答案:

答案 0 :(得分:-1)

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

for($i=0;$i<sizeof($rows);$i++){

     echo $rows[$i]['id']; //for example
}

答案 1 :(得分:-1)

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

,请参阅此处的文档

答案 2 :(得分:-2)

更改PDO的mysqli

假设已建立连接,您将需要only one line of code

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

但如果您更喜欢编写大量代码,请将fetch_all更改为fetch_assoc