Wie konvertiere ich mysqli-Ergebnisse in JSON? [duplicate]
Lesezeit: 3 Minuten
ab24
Ich habe eine MySQL-Abfrage, die ich für eine mobile Anwendung als JSON formatieren muss.
Ich habe es geschafft, ein XML-Dokument für die Abfrageergebnisse zu erstellen, suche jedoch nach etwas Leichterem. (Siehe unten für meinen aktuellen XML-Code)
$mysql = new mysqli(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME) or die('There was a problem connecting to the database');
$stmt = $mysql->prepare('SELECT DISTINCT title FROM sections ORDER BY title ASC');
$stmt->execute();
$stmt->bind_result($title);
// create xml format
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('xml');
$root = $doc->appendChild($root);
// add node for each row
while($row = $stmt->fetch()) :
$occ = $doc->createElement('data');
$occ = $root->appendChild($occ);
$child = $doc->createElement('section');
$child = $occ->appendChild($child);
$value = $doc->createTextNode($title);
$value = $child->appendChild($value);
endwhile;
$xml_string = $doc->saveXML();
header('Content-Type: application/xml; charset=ISO-8859-1');
// output xml jQuery ready
echo $xml_string;
Wille
$mysqli = new mysqli('localhost','user','password','myDatabaseName');
$myArray = array();
if ($result = $mysqli->query("SELECT * FROM phase1")) {
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$myArray[] = $row;
}
echo json_encode($myArray);
}
$result->close();
$mysqli->close();
Verwenden Sie dies für PHP 7.1.x, um eine ganze Zeile als Objekt abzurufen, wenn Sie jemals mehr als eine Spalte abrufen müssen. while ( $row = $res->fetch_object()) { $myArray[ ] = $row; }
– Shiva Charan
10. Oktober 2017 um 1:25 Uhr
Keith Braun
So habe ich meinen JSON-Feed erstellt:
$mysqli = new mysqli('localhost', 'user', 'password', 'myDatabaseName');
$myArray = array();
if ($result = $mysqli->query("SELECT * FROM phase1")) {
$tempArray = array();
while ($row = $result->fetch_object()) {
$tempArray = $row;
array_push($myArray, $tempArray);
}
echo json_encode($myArray);
}
$result->close();
$mysqli->close();
Warum definieren Sie eine neue Variable als $tempArray? Ist $row nicht genug?
– Sonnenuhr
31. Mai 2020 um 3:16 Uhr
Wie erwähnt, json_encode wird dir helfen. Am einfachsten ist es, Ihre Ergebnisse so abzurufen, wie Sie es bereits tun, und ein Array aufzubauen, an das übergeben werden kann json_encode.
Dein $json wird ein reguläres Array mit jedem Element in einem eigenen Index sein.
An Ihrem obigen Code sollte nur sehr wenig geändert werden. Alternativ können Sie sowohl XML als auch JSON zurückgeben, da der größte Teil des Codes identisch ist.
Holen Sie sich Assoc für mehr Vergnügen.
– Lodewijk
12. August 2014 um 0:33 Uhr
Hamed Ahmad
Ich habe es geschafft, diesen Code auszuführen:
<?php
//create an array
$emparray = array();
while ($row = mysqli_fetch_assoc($result)) {
$emparray[] = $row;
}
return json_encode($emparray);
Ihr gesunder Menschenverstand
Bei JSON gibt es eine wesentliche Sache – die Daten Muss UTF-8 kodiert sein. Daher muss für die Datenbankverbindung die richtige Kodierung eingestellt werden.
Der Rest ist so albern wie jede andere Datenbankoperation
$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
$mysql->set_charset('utf8mb4');
$sql="SELECT DISTINCT title FROM sections ORDER BY title ASC";
$data = $mysql->query($sql)->fetch_all(MYSQLI_ASSOC);
echo json_encode($data);
geradenajm
Wenn Sie die mysqlnd-Erweiterung in PHP installiert und aktiviert haben, können Sie Folgendes verwenden:
$mysqli = new mysqli('localhost','user','password','myDatabaseName');
$result = $mysqli->query("SELECT * FROM phase1");
//Copy result into a associative array
$resultArray = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($resultArray);
mysqli::fetch_all() benötigt die Installation des mysqlnd-Treibers, bevor Sie ihn verwenden können.
9162700cookie-checkWie konvertiere ich mysqli-Ergebnisse in JSON? [duplicate]yes