JSON кодирует результаты MySQL - PullRequest
292 голосов
/ 20 декабря 2008

Как использовать функцию json_encode() с результатами запросов MySQL? Нужно ли перебирать строки или я могу применить их ко всему объекту результатов?

Ответы [ 21 ]

3 голосов
/ 30 мая 2015

Как создать JSON, используя данные из базы данных MySQL

JSON (нотация объектов JavaScript) в настоящее время более предпочтительна, чем XML, поскольку она легкая, удобочитаемая и легко управляемая для обмена данными между различными платформами. мы увидим, как данные JSON могут быть созданы из таблицы Employee, хранящейся в базе данных MySQL.

 echo json_encode($data);

Live: [Пример ]

3 голосов
/ 19 сентября 2016
<?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, $ row_array); помогает построить массив, иначе он даст последнее значение в цикле while

эта работа, как добавление метод StringBuilder в Java

2 голосов
/ 13 октября 2016

У меня такое же требование. Я просто хочу напечатать объект результата в формате JSON, поэтому я использую код ниже. Я надеюсь, что вы найдете что-то в этом.

// 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";
}
2 голосов
/ 16 мая 2016

Я решил вот так

$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);		
Это будет возвращено в ajax как набор результатов и с помощью разбора json в части JavaScript, как это:

obj = JSON.parse(dataX);
2 голосов
/ 08 сентября 2012

Еще одна опция, использующая цикл FOR:

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

Единственным недостатком является то, что цикл for медленнее, чем, например, в то время как или особенно foreach

2 голосов
/ 17 февраля 2014

Например $ result = mysql_query ("SELECT * FROM userprofiles, где 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);
1 голос
/ 19 сентября 2017

Проверьте код ниже для использования 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);
1 голос
/ 24 февраля 2017

Код:

$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);
1 голос
/ 23 июля 2016
$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).'}';
0 голосов
/ 16 января 2019

$sql = "SELECT JSON_ARRAYAGG(JSON_OBJECT('id', tbl.id)) FROM table tbl WHERE... "; 

//And get first row :) 


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...