json_encode()
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 확장 프로그램을 사용 하십시오 .
AS
열의 이름을 public으로 바꾸는 데 사용할 때 언급하는 SELECT blog_title as title
것이 좋지만 일반인은 데이터베이스에서 정확한 열이 무엇인지 알지 못합니다.
이것을 시도하십시오, 이것은 당신의 개체를 올바르게 만들 것입니다
$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
.
고마워. 내 대답은 간다.
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);
?>
죄송합니다. 질문 후에 매우 길지만
$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
GROUP_CONCAT()
의해 제한되는 것을주의하십시오 group_concat_max_len
.
<?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 ($ 행, $ 행 _ 배열); 그렇지 않으면 배열을 빌드하는 데 도움이되지만 while 루프의 마지막 값을 제공합니다
이 작업 은 Java 에서 StringBuilder의 append 메소드 와 같습니다.
예를 들어 $ 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);
나는 같은 요구 사항이 있습니다. 아래 코드를 사용하여 결과 객체를 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";
}
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);
나는 이렇게 풀었다
$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);
이것은 결과 세트로 ajax로 반환되고 다음과 같이 javascript 부분에서 json 구문 분석을 사용합니다.
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).'}';
$rows = json_decode($mysql_result,true);
저것과 같이 쉬운 :-)
$sql = "SELECT JSON_ARRAYAGG(JSON_OBJECT('id', tbl.id)) FROM table tbl WHERE... ";
//And get first row :)
json_encode()
아래 답변에서 JSON_NUMERIC_CHECK 플래그를 제공합니다 . 간단하고 매력처럼 작동합니다! stackoverflow.com/questions/1390983/…