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
列の名前をのようなパブリックに変更するために使用する選択クエリ中に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
。
ありがとう、これは私を大いに助けてくれました。私のコード:
$sqldata = mysql_query("SELECT * FROM `$table`");
$rows = array();
while($r = mysql_fetch_assoc($sqldata)) {
$rows[] = $r;
}
echo json_encode($rows);
ありがとう..私の答えは行く:
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($ rows、$ row_array); 配列を構築するのに役立ちます。それ以外の場合は、whileループの最後の値を与えます
これはJavaのStringBuilderのappendメソッドのように機能します
たとえば、$ result = mysql_query( "SELECT * FROM userprofiles where NAME = 'TESTUSER'");
1.)$ resultが1行のみの場合。
$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 parseを使用して返されます。
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 = 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);
そのように単純です:-)
$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/...