Как использовать функцию 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);