JSON кодирует результаты MySQL

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

 $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 .

Попробуйте это, это создаст ваш объект должным образом

  $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); 

Вышеупомянутое не будет работать, по моему опыту, до того, как вы назовете корневой элемент в массиве на что-то, до этого я не смог получить доступ к чему-либо в финальном json.

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

Это должно делать свое дело!

Pär

Спасибо .. мой ответ:

 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; } в 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 

мы могли бы упростить ответ Паоло Бергантино, как это

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

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

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

  echo json_encode($data); 

Live: [Пример ]

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

эта работа вроде append метода StringBuilder в java

Еще один вариант с использованием цикла 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 где 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, поэтому я использую следующий код. Надеюсь, ты найдешь в этом что-то.

 // 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); в $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);