JSON encoder les résultats MySQL
comment utiliser la fonction json_encode()
avec les résultats des requêtes MySQL? Ai-je besoin de parcourir les lignes ou puis-je simplement l'appliquer à l'ensemble de l'objet?
20 réponses
$sth = mysqli_query("SELECT ...");
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
$rows[] = $r;
}
print json_encode($rows);
La fonction json_encode
a besoin de PHP >= 5.2 et le php-json paquet - comme mentionné ici
NOTE : mysql
est déprécié à partir de PHP 5.5.0, utiliser mysqli
extension à la place http://php.net/manual/en/migration55.deprecated.php .
essayez ceci, cela créera votre objet correctement
$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 dit " mysql_query()
retourne une ressource".
http://www.php.net/json_encode dit qu'il peut encoder n'importe quelle valeur"sauf une ressource".
vous devez itérer et collecter les résultats de la base de données dans un tableau, puis json_encode
le tableau.
Merci cela m'a beaucoup aidé. Mon code:
$sqldata = mysql_query("SELECT * FROM `$table`");
$rows = array();
while($r = mysql_fetch_assoc($sqldata)) {
$rows[] = $r;
}
echo json_encode($rows);
Merci.. ma réponse est:
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";
}
ce qui précède ne fonctionnera pas, d'après mon expérience, avant que vous ne nommiez l'élément racine dans le tableau de quelque chose, je n'ai pas été en mesure d'accéder à rien dans le le dernier json avant ça.
$sth = mysql_query("SELECT ...");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
$rows['root_name'] = $r;
}
print json_encode($rows);
ça devrait faire l'affaire!
Pär
le code ci-dessous fonctionne très bien ici!
<?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);
?>
mon correctif simple pour arrêter de mettre des marques de parole autour des valeurs numériques...
while($r = mysql_fetch_assoc($rs)){
while($elm=each($r))
{
if(is_numeric($r[$elm["key"]])){
$r[$elm["key"]]=intval($r[$elm["key"]]);
}
}
$rows[] = $r;
}
Désolé, c'est extrêmement long après la question, mais:
$sql = 'SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]")
AS json
FROM users;'
$msl = mysql_query($sql)
print($msl["json"]);
en gros:
"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
nous pourrions simplifier Paolo Bergantino réponse comme ceci
$sth = mysql_query("SELECT ...");
print json_encode(mysql_fetch_assoc($sth));
comment créer JSON en utilisant des données de la base de données MySQL
JSON (JavaScript Object Notation) est plus préférable de nos jours que XML car il est léger, lisible et facile à gérer pour échanger des données à travers diverses plates-formes. nous verrons comment les données JSON peuvent être créées à partir de la table des employés stockée dans la base de données MySQL.
echo json_encode($data);
Live: [Exemple ]
<?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); aide pour construire le tableau sinon il donne la dernière valeur dans la boucle while
ce travail comme ajoute méthode de StringBuilder dans java
une option de plus Utilisant pour boucle:
$sth = mysql_query("SELECT ...");
for($rows = array(); $row = mysql_fetch_assoc($sth); $rows[] = $row);
print json_encode($rows);
le seul inconvénient est que loop for est plus lent alors que par exemple ou surtout foreach
par exemple $result = mysql_query ("SELECT * FROM userprofiles where NAME= 'TESTUSER'");
1.) si $résultat est une seule ligne.
$response = mysql_fetch_array($result);
echo json_encode($response);
2.) si $résultat est plus qu'une ligne. Vous devez itérer les lignes et les enregistrer dans un tableau et retourner un JSON avec tableau.
$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);
j'ai résolu comme ceci
$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);
Cela sera retourné à ajax comme résultat
et en utilisant json analyser dans la partie javascript comme ceci :
obj = JSON.parse(dataX);
j'ai la même exigence. Je veux juste imprimer un objet de résultat dans le format JSON donc j'utilise le code ci-dessous. J'espère que vous trouverez quelque chose en elle.
// 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";
}
Code:
$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);
aussi simple que cela: -)
$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).'}';
cochez le code ci-dessous pour utiliser mysql_fetch et json_encode. Vous devrez itérer à travers les lignes mais si vous utilisez mysqli la situation va changer
$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);