Как использовать json_encode()функцию с результатами запросов MySQL? Нужно ли перебирать строки или я могу просто применить их ко всему объекту результатов?
Я знаю, что это очень старый вопрос. Но никто не показывает простейшую альтернативу решению проблемы целых чисел, отображаемых в виде строк. @mouckatron предлагает JSON_NUMERIC_CHECK флаг json_encode()в ответе ниже. Просто и работает как шарм! stackoverflow.com/questions/1390983/…
Я бы также посоветовал вам упомянуть, что во время запроса select, который нужно использовать, ASчтобы переименовать столбцы в нечто общедоступное, например SELECT blog_title as title, это чище, и публика не знает, какие именно столбцы взяты из базы данных.
Роберт Питт
14
Этот код ошибочно кодирует все числовые значения в виде строк. Например, числовое поле mySQL с именем Score будет иметь значение JSON «12» вместо 12 (обратите внимание на кавычки).
этот, даст нам массив, содержащий; 1) пустая квадратная скобка 2) за которой следует фигурная скобка, содержащая строки возвращаемых результатов. Чем это отличается от других?
Вышесказанное не сработает, по моему опыту, до того, как вы присвоите корневому элементу массива что-либо, я не смог получить доступ к чему-либо в финальном json до этого.
$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 stringwith concatenated non-NULL valuefrom a group
2.) если результат $ больше чем одна строка. Вам нужно перебрать строки, сохранить их в массив и вернуть 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);
У меня такое же требование. Я просто хочу напечатать объект результата в формате 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";}
$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);
json_encode()
в ответе ниже. Просто и работает как шарм! stackoverflow.com/questions/1390983/…Ответы:
Для этой функции
json_encode
требуется PHP> = 5.2 и пакет php-json - как упоминалось здесьПРИМЕЧАНИЕ :
mysql
устарело с PHP 5.5.0,mysqli
вместо этого используйте расширение http://php.net/manual/en/migration55.deprecated.php .источник
AS
чтобы переименовать столбцы в нечто общедоступное, напримерSELECT blog_title as title
, это чище, и публика не знает, какие именно столбцы взяты из базы данных.Попробуйте, это создаст ваш объект правильно
источник
http://www.php.net/mysql_query говорит "
mysql_query()
возвращает ресурс".http://www.php.net/json_encode говорит, что может кодировать любое значение «кроме ресурса».
Вам нужно перебрать и собрать результаты базы данных в массив, а затем
json_encode
в массив.источник
Спасибо, это мне очень помогло. Мой код:
источник
Спасибо .. мой ответ идет:
источник
Вышесказанное не сработает, по моему опыту, до того, как вы присвоите корневому элементу массива что-либо, я не смог получить доступ к чему-либо в финальном json до этого.
Это должно делать свое дело!
Pär
источник
Код ниже работает отлично здесь!
источник
Мое простое исправление, чтобы прекратить это ставить речевые метки вокруг числовых значений ...
источник
Извините, это очень долго после вопроса, но:
Просто в основном:
источник
GROUP_CONCAT()
ограниченоgroup_concat_max_len
.мы могли бы упростить ответ Паоло Бергантино, как это
источник
aarray_push ($ строки, $ row_array); помогите построить массив, иначе он даст последнее значение в цикле while
эта работа, как добавить метод StringBuilder в Java
источник
Еще одна опция, использующая цикл FOR:
Единственным недостатком является то, что цикл for медленнее, чем, например, while или особенно foreach.
источник
Например, $ result = mysql_query ("SELECT * FROM userprofiles, где NAME = 'TESTUSER'");
1.) если $ result - это только одна строка.
2.) если результат $ больше чем одна строка. Вам нужно перебрать строки, сохранить их в массив и вернуть json с массивом в нем.
источник
У меня такое же требование. Я просто хочу напечатать объект результата в формате JSON, поэтому я использую приведенный ниже код. Я надеюсь, что вы найдете что-то в этом.
источник
Проверьте код ниже для использования mysql_fetch и json_encode. Вам нужно будет перебирать строки, но если вы используете mysqli, ситуация изменится
источник
Я решил так
Это будет возвращено ajax как набор результатов и с помощью json parse в части javascript следующим образом:
источник
источник
Код:
источник
так просто, как, что :-)
источник
источник