Meine SQL-Anweisung gibt ein Array aus zwei assoziativen Schlüsseln nach oben und unten zurück.
query = "SELECT `up`,`down` FROM `records` WHERE `id`=id"
Gibt es eine Möglichkeit, in einer Zeile beide Variablen zu setzen, wie:
$up, $down = "SELECT `up`,`down` FROM `records` WHERE `id`=id"
also nach oben und nach unten werden die entsprechenden Werte genommen?
Antworten:
2 für die Antwort № 1Wenn Sie nach dem SQL-Aufruf ein assoziatives Array wie folgt erhalten
array(
"up" => "foo",
"down" => "bar"
);
Dann kannst du verwenden extract()
um die Variablen zu bekommen $up
und $down
.
Also könntest du das tun:
// no need to initialize $up and $down
extract(exec_query()); // asusming exec_query() returns the assoc array defined above
echo $up; // will print "foo"
echo PHP_EOL;
echo $down; // will print "bar"
PS - Obwohl dies möglich wäre, ist es aus Sicht der Lesbarkeit wirklich schlecht, und ich würde es dringend empfehlen.
3 für die Antwort № 2
Der Rückgabewert von mysqli::query()
ist nicht sofort ein assoziatives Array, sondern eine "Ergebnismenge". Und wenn die Abfrage fehlschlägt, bekommen Sie das nicht einmal, aber FALSE
. So, während Sie tun konnten
list($up, $down) = $db->query ("SELECT up, down FROM records WHERE id="id";")->fetch_all();
Auf diese Weise können Sie nicht überprüfen, ob die Abfrage tatsächlich funktioniert hat. Sie sollten sie also besser aufteilen.
1 für die Antwort № 3
list()
können Sie mehrere Werte aus einem Funktionsaufruf zuweisen. In Ihrem Fall müssen Sie jedoch auch Ihre Abfrage ausführen und Daten von Ihrem Datenbankserver abrufen.
Beispielsweise:
list($up, $down) = mysqli_fetch_array($queryResult, MYSQLI_ASSOC);