Wie konvertiere ich mysqli-Ergebnisse in JSON? [duplicate]

Lesezeit: 3 Minuten

Wie konvertiere ich mysqli Ergebnisse in JSON duplicate
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;

Wie konvertiere ich mysqli Ergebnisse in JSON duplicate
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();
  1. $row = $result->fetch_array(MYSQLI_ASSOC)
  2. $myArray[] = $row

Ausgabe so:

[
    {"id":"31","name":"pruduct_name1","price":"98"},
    {"id":"30","name":"pruduct_name2","price":"23"}
]

Wenn Sie einen anderen Stil wünschen, können Sie dies versuchen:

  1. $row = $result->fetch_row()
  2. $myArray[] = $row

Ausgabe wird so aussehen:

[
    ["31","pruduct_name1","98"],
    ["30","pruduct_name2","23"]
]

  • 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


1646256247 882 Wie konvertiere ich mysqli Ergebnisse in JSON duplicate
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.

Beispiel:

$json = array();
while($row = $stmt->fetch()){
  $json[]['foo'] = "your content  here";
  $json[]['bar'] = "more database results";
}
echo json_encode($json);

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

1646256247 186 Wie konvertiere ich mysqli Ergebnisse in JSON duplicate
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);

1646256248 297 Wie konvertiere ich mysqli Ergebnisse in JSON duplicate
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);

1646256248 623 Wie konvertiere ich mysqli Ergebnisse in JSON duplicate
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.

916270cookie-checkWie konvertiere ich mysqli-Ergebnisse in JSON? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy