JSON编码MySQL结果

如何在MySQL查询结果中使用json_encode()函数? 我是否需要遍历行或者我可以将它应用于整个结果对象?

 $sth = mysqli_query("SELECT ..."); $rows = array(); while($r = mysqli_fetch_assoc($sth)) { $rows[] = $r; } print json_encode($rows); 

函数json_encode需要PHP> = 5.2和php-json包 – 如这里所述

注意mysql从PHP 5.5.0开始已经被弃用了,而不是使用mysqli扩展http://php.net/manual/en/migration55.deprecated.php

试试这个,这将正确地创build你的对象

  $result = mysql_query("SELECT ..."); $rows = array(); while($r = mysql_fetch_assoc($result)) { $rows['object_name'][] = $r; } print json_encode($rows); 

http://www.php.net/mysql_query说“; mysql_query()返回资源”。

http://www.php.net/json_encode说它可以编码任何值“除了资源”。;

你需要迭代并收集数组中的数据库结果,然后json_encode数组。

感谢这帮了我很多。 我的代码:

 $sqldata = mysql_query("SELECT * FROM `$table`"); $rows = array(); while($r = mysql_fetch_assoc($sqldata)) { $rows[] = $r; } echo json_encode($rows); 

根据我的经验,在你将数组中的根元素命名为something之前,以上操作将无法工作,在此之前,我还无法访问最后的json中的任何内容。

 $sth = mysql_query("SELECT ..."); $rows = array(); while($r = mysql_fetch_assoc($sth)) { $rows['root_name'] = $r; } print json_encode($rows); 

这应该够了吧!

平价

谢谢..我的答案是:

 if ($result->num_rows > 0) { # code... $arr = []; $inc = 0; while ($row = $result->fetch_assoc()) { # code... $jsonArrayObject = (array('lat' => $row["lat"], 'lon' => $row["lon"], 'addr' => $row["address"])); $arr[$inc] = $jsonArrayObject; $inc++; } $json_array = json_encode($arr); echo $json_array; } else{ echo "0 results"; } 

下面的代码在这里工作正常!

 <?php $con=mysqli_connect("localhost",$username,$password,databaseName); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $query = "the query here"; $result = mysqli_query($con,$query); $rows = array(); while($r = mysqli_fetch_array($result)) { $rows[] = $r; } echo json_encode($rows); mysqli_close($con); ?> 

我简单的修复,以防止它周围的数字值的语音标记…

 while($r = mysql_fetch_assoc($rs)){ while($elm=each($r)) { if(is_numeric($r[$elm["key"]])){ $r[$elm["key"]]=intval($r[$elm["key"]]); } } $rows[] = $r; } 

对不起,这个问题之后这个时间非常长,但是:

 $sql = 'SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]") AS json FROM users;' $msl = mysql_query($sql) print($msl["json"]); 

基本上就是:

 "SELECT" Select the rows "CONCAT" Returns the string that results from concatenating (joining) all the arguments "GROUP_CONCAT" Returns a string with concatenated non-NULL value from a group 

我们可以简化Paolo Bergantino这样的答案

 $sth = mysql_query("SELECT ..."); print json_encode(mysql_fetch_assoc($sth)); 

如何使用MySQL数据库中的数据创buildJSON

JSON(JavaScript对象表示法)现在比XML更受青睐,因为它是轻量级的,可读的,并且易于在各种平台之间交换数据。 我们将看到如何从存储在MySQL数据库中的Employee表中创buildJSON数据。

  echo json_encode($data); 

直播: [例子 ]

 <?php define('HOST','localhost'); define('USER','root'); define('PASS',''); define('DB','dishant'); $con = mysqli_connect(HOST,USER,PASS,DB); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql = "select * from demo "; $sth = mysqli_query($con,$sql); $rows = array(); while($r = mysqli_fetch_array($sth,MYSQL_ASSOC)) { $row_array['id'] = $r; **array_push($rows,$row_array);** } echo json_encode($rows); mysqli_close($con); ?> 

aarray_push($行,$ row_array); 有助于构build数组,否则它会给while循环中的最后一个值

这个工作就像在java中StringBuilder的 追加方法

使用FOR循环的另一个选项:

  $sth = mysql_query("SELECT ..."); for($rows = array(); $row = mysql_fetch_assoc($sth); $rows[] = $row); print json_encode($rows); 

唯一的缺点是,循环是慢的,例如while或特别是foreach

例如$ result = mysql_query(“SELECT * FROM userprofiles where NAME ='TESTUSER'”);

1)如果$ result只有一行。

 $response = mysql_fetch_array($result); echo json_encode($response); 

2)如果$ result是多于一行。 您需要迭代行并将其保存到一个数组,并返回一个json数组。

 $rows = array(); if (mysql_num_rows($result) > 0) { while($r = mysql_fetch_assoc($result)) { $id = $r["USERID"]; //a column name (ex.ID) used to get a value of the single row at at time $rows[$id] = $r; //save the fetched row and add it to the array. } } echo json_encode($rows); 

我解决了这个问题

 $stmt->bind_result($cde,$v_off,$em_nm,$q_id,$v_m); $list=array(); $i=0; while ($cresult=$stmt->fetch()){ $list[$i][0]=$cde; $list[$i][1]=$v_off; $list[$i][2]=$em_nm; $list[$i][3]=$q_id; $list[$i][4]=$v_m; $i=$i+1; } echo json_encode($list); 

我有同样的要求。 我只是想打印一个结果对象到JSON格式,所以我使用下面的代码。 我希望你能find一些东西。

 // Code of Conversion $query = "SELECT * FROM products;"; $result = mysqli_query($conn , $query); if ($result) { echo "</br>"."Results Found"; // Conversion of result object into JSON format $rows = array(); while($temp = mysqli_fetch_assoc($result)) { $rows[] = $temp; } echo "</br>" . json_encode($rows); } else { echo "No Results Found"; } 
 $rows = json_decode($mysql_result,true); 

就如此容易 :-)

 $array = array(); $subArray=array(); $sql_results = mysql_query('SELECT * FROM `location`'); while($row = mysql_fetch_array($sql_results)) { $subArray[location_id]=$row['location']; //location_id is key and $row['location'] is value which come fron database. $subArray[x]=$row['x']; $subArray[y]=$row['y']; $array[] = $subArray ; } echo'{"ProductsData":'.json_encode($array).'}'; 

码:

 $rows = array(); while($r = mysqli_fetch_array($result,MYSQL_ASSOC)) { $row_array['result'] = $r; array_push($rows,$row_array); // here we push every iteration to an array otherwise you will get only last iteration value } echo json_encode($rows); 

检查下面的代码使用mysql_fetch和json_encode。 你将需要遍历行,但如果你使用mysqli的情况将改变

 $kt_query="SELECT * FROM tbl_xxx"; $kt_result = mysql_query($kt_query) or die('Query failed: ' . mysql_error()); $rows= array(); while($sonuc=mysql_fetch_assoc($kt_result)) { $rows[]=$sonuc; } print json_encode($rows);