Làm cách nào để sử dụng json_encode()
hàm với kết quả truy vấn MySQL? Tôi có cần lặp lại qua các hàng hay tôi chỉ có thể áp dụng nó cho toàn bộ đối tượng kết quả?
Làm cách nào để sử dụng json_encode()
hàm với kết quả truy vấn MySQL? Tôi có cần lặp lại qua các hàng hay tôi chỉ có thể áp dụng nó cho toàn bộ đối tượng kết quả?
Câu trả lời:
$sth = mysqli_query("SELECT ...");
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
$rows[] = $r;
}
print json_encode($rows);
Hàm json_encode
cần PHP> = 5.2 và gói php-json - như được đề cập ở đây
LƯU Ý : mysql
không được chấp nhận kể từ PHP 5.5.0, hãy sử dụng mysqli
tiện ích mở rộng thay vì http://php.net/manual/en/migration55.deprecated.php .
AS
để đổi tên các cột thành một cái gì đó cho công chúng, chẳng hạn như SELECT blog_title as title
cái này sạch hơn và công chúng không biết các cột chính xác là gì từ cơ sở dữ liệu.
Hãy thử điều này, điều này sẽ tạo ra đối tượng của bạn đúng cách
$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 nói " mysql_query()
trả về một tài nguyên".
http://www.php.net/json_encode nói rằng nó có thể mã hóa bất kỳ giá trị nào "ngoại trừ tài nguyên".
Bạn cần lặp lại và thu thập các kết quả cơ sở dữ liệu trong một mảng, sau đó json_encode
là mảng.
Cảm ơn điều này đã giúp tôi rất nhiều. Mã của tôi:
$sqldata = mysql_query("SELECT * FROM `$table`");
$rows = array();
while($r = mysql_fetch_assoc($sqldata)) {
$rows[] = $r;
}
echo json_encode($rows);
Cảm ơn .. câu trả lời của tôi đi:
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";
}
Theo kinh nghiệm của tôi, ở trên sẽ không hoạt động, trước khi bạn đặt tên phần tử gốc trong mảng thành thứ gì đó, tôi không thể truy cập bất cứ thứ gì trong json cuối cùng trước đó.
$sth = mysql_query("SELECT ...");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
$rows['root_name'] = $r;
}
print json_encode($rows);
Điều đó sẽ làm các trick!
Pär
Mã dưới đây hoạt động tốt ở đây!
<?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);
?>
Xin lỗi, điều này rất dài sau câu hỏi, nhưng:
$sql = 'SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]")
AS json
FROM users;'
$msl = mysql_query($sql)
print($msl["json"]);
Về cơ bản:
"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
GROUP_CONCAT()
là giới hạn group_concat_max_len
.
chúng ta có thể đơn giản hóa câu trả lời của Paolo Bergantino như thế này
$sth = mysql_query("SELECT ...");
print json_encode(mysql_fetch_assoc($sth));
<?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 ($ hàng, $ row_array); giúp xây dựng mảng nếu không nó cho giá trị cuối cùng trong vòng lặp while
công việc này giống như phương thức nối thêm của StringBuilder trong java
Ví dụ: $ result = mysql_query ("CHỌN * TỪ userprofiles trong đó NAME = 'TESTUSER'");
1.) nếu kết quả $ chỉ là một hàng.
$response = mysql_fetch_array($result);
echo json_encode($response);
2.) nếu kết quả $ là nhiều hơn một hàng. Bạn cần lặp lại các hàng và lưu nó vào một mảng và trả về một json có mảng trong đó.
$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);
Tôi có cùng yêu cầu. Tôi chỉ muốn in một đối tượng kết quả sang định dạng JSON nên tôi sử dụng mã bên dưới. Tôi hy vọng bạn tìm thấy một cái gì đó trong đó.
// 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";
}
Kiểm tra mã dưới đây để sử dụng mysql_fetch và json_encode. Bạn sẽ cần phải lặp qua các hàng nhưng nếu bạn sử dụng mysqli thì tình hình sẽ thay đổi
$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);
Tôi đã giải quyết như thế này
$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);
Điều này sẽ được trả về ajax dưới dạng tập kết quả và bằng cách sử dụng phân tích json trong phần javascript như thế này:
obj = JSON.parse(dataX);
$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).'}';
Mã số:
$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);
$rows = json_decode($mysql_result,true);
đơn giản vậy thôi :-)
$sql = "SELECT JSON_ARRAYAGG(JSON_OBJECT('id', tbl.id)) FROM table tbl WHERE... ";
//And get first row :)
json_encode()
trong câu trả lời dưới đây. Đơn giản và nó hoạt động như một nét duyên dáng! stackoverflow.com/questions/1390983/