web-dev-qa-db-de.com

JSON codiert MySQL-Ergebnisse

Wie verwende ich die Funktion json_encode() mit MySQL-Abfrageergebnissen? Muss ich die Zeilen durchlaufen oder kann ich sie einfach auf das gesamte Ergebnisobjekt anwenden?

285
Trick Jarrett
$sth = mysqli_query("SELECT ...");
$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
    $rows[] = $r;
}
print json_encode($rows);

Die Funktion json_encode benötigt PHP> = 5.2 und das php-json -Paket - wie hier hier

NOTE: mysql ist seit PHP 5.5.0 veraltet, verwenden Sie stattdessen die Erweiterung mysqlihttp://php.net/manual/de/migration55.deprecated.php .

469

Versuchen Sie dies, damit wird Ihr Objekt ordnungsgemäß erstellt

 $result = mysql_query("SELECT ...");
 $rows = array();
   while($r = mysql_fetch_assoc($result)) {
     $rows['object_name'][] = $r;
   }

 print json_encode($rows);
42
ddavtian

http://www.php.net/mysql_query sagt "mysql_query() gibt eine Ressource zurück".

http://www.php.net/json_encode sagt, dass er jeden Wert "außer einer Ressource" kodieren kann.

Sie müssen die Datenbankergebnisse durchlaufen und in einem Array sammeln, dann json_encode das Array.

25
Hugh Bothwell

Danke, das hat mir sehr geholfen. Mein Code:

$sqldata = mysql_query("SELECT * FROM `$table`");

$rows = array();
while($r = mysql_fetch_assoc($sqldata)) {
  $rows[] = $r;
}

echo json_encode($rows);
16
Tokes

Danke .. meine Antwort lautet:

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";
        }
9
aashima

Das Obige wird meiner Erfahrung nach nicht funktionieren, bevor Sie das Wurzelelement Im Array auf etwas bezeichnen. Ich konnte vorher noch nichts auf den Final json zugreifen.

$sth = mysql_query("SELECT ...");
$rows = array();
while($r = mysql_fetch_assoc($sth)) {
    $rows['root_name'] = $r;
}
print json_encode($rows);

Das sollte den Trick tun!

Par

8
Pär

Der folgende Code funktioniert hier gut!

<?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);
?>
7
ferreirabraga

Sorry, das ist extrem lange nach der Frage, aber:

$sql = 'SELECT CONCAT("[", GROUP_CONCAT(CONCAT("{username:'",username,"'"), CONCAT(",email:'",email),"'}")), "]") 
AS json 
FROM users;'
$msl = mysql_query($sql)
print($msl["json"]);

Einfach im Grunde:

"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
4
gear4

Meine einfache Lösung, um zu verhindern, dass numerische Werte mit Sprachmarken versehen werden ...

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;
}   
4
James
<?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 ($ row, $ row_array); help, um ein Array zu erstellen, andernfalls wird der letzte Wert in der while-Schleife angegeben

diese Arbeit wie append Methode von StringBuilder in Java

3
DishantPatel

wir könnten Paolo Bergantino so beantworten

$sth = mysql_query("SELECT ...");
print json_encode(mysql_fetch_assoc($sth));
3
jrran90

So erstellen Sie JSON mit Daten aus der MySQL-Datenbank

JSON (JavaScript Object Notation) wird heutzutage gegenüber XML mehr bevorzugt, da es für den Datenaustausch auf verschiedenen Plattformen leicht, lesbar und einfach zu verwalten ist. Wir werden sehen, wie JSON-Daten aus der Employee-Tabelle erstellt werden können, die in der MySQL-Datenbank gespeichert ist. 

 echo json_encode($data);

Live: [Beispiel ]

3
indian

Zum Beispiel $ Result = mysql_query ("SELECT * FROM-Benutzerprofile wobei NAME = 'TESTUSER'"));

1.) Wenn $ result nur eine Zeile ist.

$response = mysql_fetch_array($result);
echo json_encode($response);

2.) Wenn $ result mehr als eine Zeile ist. Sie müssen die Zeilen durchlaufen und in einem Array speichern und einen Json mit Array zurückgeben.

$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);
2
Jyoti Prakash

Ich habe das so gelöst

$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);                
obj = JSON.parse(dataX);
2
Bineesh

Ich habe die gleiche Anforderung. Ich möchte nur ein Ergebnisobjekt im JSON-Format drucken, daher verwende ich den folgenden Code. Ich hoffe du findest etwas drin.

// 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";
}
2
Darshan Dhoriya

Eine weitere Option mit FOR-Schleife:

 $sth = mysql_query("SELECT ...");
 for($rows = array(); $row = mysql_fetch_assoc($sth); $rows[] = $row);
 print json_encode($rows);

Der einzige Nachteil ist, dass die Schleife langsamer ist als z. während oder vor allem für

2
NGix
$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);

so einfach ist das :-)

Überprüfen Sie den Code unten, um mysql_fetch und json_encode zu verwenden. Sie müssen die Zeilen durchlaufen, aber wenn Sie mysqli verwenden, ändert sich die Situation

$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);
1
user3172285

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);
1
inrsaurabh

$sql = "SELECT JSON_ARRAYAGG(JSON_OBJECT('id', tbl.id)) FROM table tbl WHERE... "; 

//And get first row :) 


0
Andrey Mashukov