Ich mysql_fetch_array()
wechsle von "alten" PHP-MySQL-Methoden usw. und versuche, durch die Verwendung der Datenbank-API in meinen Modulen mehr Drupalität zu erreichen.
Ich möchte einfach einen Wert zurückgeben und ausdrucken. Beispielsweise:
$query = db_query("SELECT zip FROM {zipcodes} WHERE city = :city LIMIT 1", array(":city" => $city));
Ich weiß, dass der Wert vorhanden ist. Ich kann auf ihn zugreifen und ihn ausdrucken, indem ich traditionelle Methoden außerhalb der Datenbank-API verwende.
print $query->zip
funktioniert nicht.
Die API-Dokumentation ist so klar wie Schlamm.
Kann mir jemand sagen, wie ich richtig auf diese Werte zugreifen kann?
Gibt es ein gutes Tutorial, das jeder empfehlen kann?
So verwenden Sie die Datenbank-API in Drupal 7, ohne eine MySQL-Abfrage zu schreiben:
quelle
Sie müssen Ihre $ -Abfrage in einer Schleife ausführen. Sie können jedoch nicht davon ausgehen, dass Sie mit der oben angegebenen Abfrage nur ein Ergebnis haben.
Wenn Sie wissen, dass Sie nur ein Ergebnis haben, können Sie fetchObject für Ihre Abfrage aufrufen ->
print $ query-> zip sollte dir dann geben, was du willst.
quelle
Würde ich tun
wenn Sie genau eine Zeile aus der Ergebnismenge wollen. Andernfalls ist eine Schleife mit foreach die beste Option, wie zuvor vorgeschlagen.
quelle
Ich weiß, dass dies alt ist, aber Sie können und sollten Folgendes tun:
quelle
Nun, in Drupa 7 müssen Sie Möglichkeiten haben, dies richtig zu tun:
db_select - In Drupal gibt es eine Funktion, die ein Objekt zurückgibt, das Sie mit der SQL-Abfrage zusammen erstellen . Sie haben eine Methode für das Objekt namens range. du kannst es benutzen.
Entitätsfeldabfrage, die eine Klasse ist, die eine SQL-Abfrage nach Entitäten erstellt: https://www.drupal.org/node/1343708 . Dies ist auch die Range-Methode.
quelle
Drupal 7
Verwenden Sie diese Abfrage für ein einzelnes Ergebnis:
Anstatt dies zu benutzen
weil seine Warnung erzeugen.
quelle
Drupal 6
$query
wird Ihr Ergebnis sein. Sie müssen Werte davon abrufen. In Ihrem Fall. Wenn es nur 1 Zeile und 1 Spalte abruft, dh zip, dann, um direkt zu erhalten$query->zip
funktioniert nicht, da $ query keine Ergebnismenge, kein geladenes Objekt oder Array ist. Das sollte also reichenHinweis:
db_fetch_array
ist eine weitere API zum Abrufen von Werten im Array-Formatquelle