Bagaimana cara menggunakan json_encode()fungsi dengan hasil query MySQL? Apakah saya perlu beralih melalui baris atau dapatkah saya menerapkannya pada seluruh objek hasil?
Saya tahu bahwa ini adalah pertanyaan yang sangat lama. Tapi tidak ada yang menunjukkan alternatif paling sederhana untuk memperbaiki masalah bilangan bulat muncul sebagai string. @mouckatron menawarkan bendera JSON_NUMERIC_CHECK json_encode()dalam jawaban di bawah. Sederhana dan berfungsi seperti pesona! stackoverflow.com/questions/1390983/…
Saya akan menyarankan Anda untuk menyebutkan bahwa selama kueri pemilihan yang digunakan ASuntuk mengubah nama kolom menjadi sesuatu untuk publik seperti SELECT blog_title as title, ini lebih bersih dan publik tidak tahu apa kolom sebenarnya dari database.
RobertPitt
14
Kode ini secara keliru mengkode semua nilai numerik sebagai string. Misalnya, bidang numerik mySQL yang disebut skor akan memiliki nilai JSON "12" dan bukan 12 (perhatikan tanda kutip).
yang ini, akan memberi kita array yang berisi; 1) braket kotak kosong 2) diikuti oleh braket keriting yang berisi baris hasil kami apa perbedaan ini dari yang lain?
Di atas tidak akan bekerja, dalam pengalaman saya, sebelum Anda nama elemen root dalam array untuk sesuatu, saya belum dapat mengakses apa pun di json terakhir sebelum itu.
$sql ='SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]")
AS json
FROM users;'
$msl = mysql_query($sql)print($msl["json"]);
Pada dasarnya hanya:
"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.) jika $ result lebih dari satu baris. Anda perlu mengulangi baris dan menyimpannya ke array dan mengembalikan json dengan array di dalamnya.
$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);
Saya memiliki persyaratan yang sama. Saya hanya ingin mencetak objek hasil ke dalam format JSON jadi saya menggunakan kode di bawah ini. Saya harap Anda menemukan sesuatu di dalamnya.
// 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";}
Periksa kode di bawah ini untuk menggunakan mysql_fetch dan json_encode. Anda perlu mengulangi baris-baris tersebut tetapi jika Anda menggunakan mysqli situasinya akan berubah
$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()
dalam jawaban di bawah. Sederhana dan berfungsi seperti pesona! stackoverflow.com/questions/1390983/…Jawaban:
Fungsi ini
json_encode
membutuhkan PHP> = 5.2 dan paket php-json - seperti yang disebutkan di siniCATATAN :
mysql
sudah ditinggalkan pada PHP 5.5.0, gunakanmysqli
ekstensi sebagai gantinya http://php.net/manual/en/migration55.deprecated.php .sumber
AS
untuk mengubah nama kolom menjadi sesuatu untuk publik sepertiSELECT blog_title as title
, ini lebih bersih dan publik tidak tahu apa kolom sebenarnya dari database.Coba ini, ini akan membuat objek Anda dengan benar
sumber
http://www.php.net/mysql_query mengatakan "
mysql_query()
mengembalikan sumber daya".http://www.php.net/json_encode mengatakan dapat mengkodekan nilai apa pun "kecuali sumber daya".
Anda perlu mengulangi dan mengumpulkan hasil database dalam sebuah array, kemudian
json_encode
array.sumber
Terima kasih, ini banyak membantu saya. Kode saya:
sumber
Terima kasih .. jawabanku:
sumber
Di atas tidak akan bekerja, dalam pengalaman saya, sebelum Anda nama elemen root dalam array untuk sesuatu, saya belum dapat mengakses apa pun di json terakhir sebelum itu.
Itu harus melakukan trik!
Par
sumber
Kode di bawah ini berfungsi dengan baik di sini!
sumber
Perbaikan sederhana saya untuk menghentikannya menempatkan tanda pidato di sekitar nilai numerik ...
sumber
Maaf, ini sangat lama setelah pertanyaan, tetapi:
Pada dasarnya hanya:
sumber
GROUP_CONCAT()
dibatasi olehgroup_concat_max_len
.kita bisa menyederhanakan jawaban Paolo Bergantino seperti ini
sumber
aarray_push ($ rows, $ row_array); membantu membangun array jika tidak memberikan nilai terakhir di loop sementara
ini berfungsi seperti menambahkan metode StringBuilder di java
sumber
Satu lagi opsi menggunakan loop UNTUK:
Satu-satunya kelemahan adalah bahwa loop for lebih lambat dari eg misalnya atau terutama foreach
sumber
Misalnya $ result = mysql_query ("SELECT * FROM userprofiles mana NAME = 'TESTUSER'");
1.) jika $ hasil hanya satu baris.
2.) jika $ result lebih dari satu baris. Anda perlu mengulangi baris dan menyimpannya ke array dan mengembalikan json dengan array di dalamnya.
sumber
Saya memiliki persyaratan yang sama. Saya hanya ingin mencetak objek hasil ke dalam format JSON jadi saya menggunakan kode di bawah ini. Saya harap Anda menemukan sesuatu di dalamnya.
sumber
Periksa kode di bawah ini untuk menggunakan mysql_fetch dan json_encode. Anda perlu mengulangi baris-baris tersebut tetapi jika Anda menggunakan mysqli situasinya akan berubah
sumber
Saya memecahkan seperti ini
Ini akan dikembalikan ke ajax sebagai set hasil dan dengan menggunakan json parse di bagian javascript seperti ini:
sumber
sumber
Kode:
sumber
sesimpel itu :-)
sumber
sumber