Wird bei einer INSERT-Abfrage etwas von MySQL / PHP zurückgegeben? Hier ist meine Funktion die ich in einer CLASS habe.
%Vor%So rufe ich die Funktion
auf %Vor%Aber beim Ausführen einer INSERT-Abfrage gibt das $ rs nichts zurück. Braucht meine Funktion Hilfe oder ist dies das Standardverhalten? Irgendwelche Tipps wären auch hilfreich.
DUH, danke, dass du mich daran erinnert hast, dass es TRUE / FALSE zurückgibt. Aus irgendeinem Grund hatte ich es in meinem Kopf, es hat tatsächlich einen anderen Wert zurückgegeben, aber nachdem ich meine Funktion betrachtet habe, sehe ich, dass ich nicht nach der TRUE / FALSE-Bedingung suche und nur das Ergebnis-Array durchlaufe.
Danke für alle richtigen Antworten, aber zuerst richtig antworten, hab die Punkte, Prost!
INSERT gibt nur wahr oder falsch zurück. Um etwas Nützliches zurückzugeben, benötigen Sie eine SELECT- oder ähnliche Abfrage. Es gibt kein Ergebnis, das mit INSERT abgerufen werden kann.
Aus der php-Dokumentation:
Rückgabewerte
Für SELECT
, SHOW, DESCRIBE, EXPLAIN und andere Anweisungen, die resultset zurückgeben, gibt mysql_query()
eine Ressource bei Erfolg oder FALSE bei Fehler zurück.
Für andere Arten von SQL-Anweisungen, INSERT
, UPDATE
, DELETE
, DROP
usw. gibt mysql_query()
TRUE
bei Erfolg oder FALSE
bei Fehler zurück.
Die zurückgegebene Ergebnisressource sollte an mysql_fetch_array()
und andere Funktionen für den Umgang mit Ergebnistabellen übergeben werden, um auf die zurückgegebenen Daten zuzugreifen.
Verwenden Sie mysql_num_rows()
, um herauszufinden, wie viele Zeilen für ein SELECT statement
oder mysql_affected_rows()
zurückgegeben wurden, um herauszufinden, wie viele Zeilen von einem DELETE
, INSERT
, REPLACE
oder UPDATE statement.
betroffen waren.
mysql_query()
wird ebenfalls fehlschlagen und FALSE
zurückgeben, wenn der Benutzer nicht berechtigt ist, auf die von der Abfrage referenzierten Tabellen zuzugreifen.
Von php.net Ссылка
Für SELECT, SHOW, BESCHREIBEN, EXPLAIN und andere Anweisungen zurückgeben resultset, mysql_query () gibt a zurück Ressource bei Erfolg oder FALSE an Fehler.
Für andere Arten von SQL-Anweisungen EINFÜGEN, AKTUALISIEREN, LÖSCHEN, TROPFEN usw. mysql_query () gibt bei Erfolg TRUE zurück oder FALSE bei einem Fehler.
Wenn Devs Hausfunktionen zum Bearbeiten von Abfragen erstellen, verwenden sie im Allgemeinen zwei Methoden. Eins, "Abfrage", verwendet für SELECTs und co, und eine, "exec", andere INSERTs, UPDATEs und andere (wie in PDO-Erweiterung).
Wenn Sie Ihre Funktion beibehalten möchten, fügen Sie eine IF-Anweisung um die Schleife hinzu und überprüfen Sie den Typ von $ result (mit einem is_resource () zum Beispiel)
Im Beispiel unten füge ich meiner insert-Klausel das "returning" zusammen mit dem Primärschlüssel meiner Tabelle hinzu, und nach dem Ausführen führe ich einen Abruf durch, um ein Array mit dem Wert der zuletzt eingefügten ID zu erhalten.
%Vor%Tags und Links sql php mysql return-value