我阅读了与我的问题相关的大部分帖子,但没有一个可以解决我的简单问题。
我使用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');
}
});
当我打开浏览器的调试器时,这是我的输出:
我试图返回一个简单的数组,我做错了什么?
答案 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));
,请参阅此处的文档
答案 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