PHP, mysql_query funktioniert einfach NICHT
Bin ich bereit, mir das Haar ausreißen...
Diese perfekt funktioniert:
$link = mysql_connect('localhost', 'prototype_wp_usr', 'password') or die("Error: " . mysql_error());
mysql_select_db('prototype_wp');
$query = "INSERT INTO wp_zsession_capture
(id, session_id, user_login, first_name, last_name, user_email, phone_number, last_conviction)
VALUES (
'NULL',
'". session_id() ."',
'". $_POST['user_login'] ."',
'". $_POST['first_name'] ."',
'". $_POST['last_name'] ."',
'". $_POST['user_email'] ."',
'". $_POST['phone_number'] ."',
'". $_POST['last_conviction'] ."'
)";
mysql_query($query) or die ('Error updating database: ' . mysql_error());
mysql_close($link);
Bedeutet dies NICHT Arbeit:
$link = mysql_connect('localhost', 'prototype_wp_usr', 'password') or die("Error: " . mysql_error());
mysql_select_db('prototype_wp');
$query = "UPDATE wp_zsession_capture SET removed = 1 WHERE session_id = '$sessionid'";
mysql_query($query) or die ('Error updating database: ' . mysql_error());
mysql_close($link);
Diese beiden Teile des Codes in eine form... wenn es Fehler in der form, die ERSTE sql-Abfrage ausgeführt, um zu retten, was in der Sitzung an diesem Punkt. Wenn keine Fehler vorhanden sind, und nach einigen anderen Sachen, die auf geht, die ZWEITE sql-Abfrage ausgeführt wird, AKTUALISIEREN die 'entfernt' status innerhalb der zuvor gespeicherte Einträge.
Ich habe seit neuestem mit einem Millionen-alternative Schreibweisen und ich Schaffe es nicht, diese Zeilen zu AKTUALISIEREN. Wenn ich ausführen raw-SQL in phpMyAdmin funktioniert es einwandfrei. Es ist nichts logisches, was das angeht... oder vielleicht bin ich nur so unglaublich müde.
FYI: $sessionid = session_id();
-- UPDATE --
Ich wirklich sehr zu schätzen weiß jeder, der Besorgnis, aber lassen Sie mich einige Dinge:
- Ja, es ist eine Spalte in meiner Tabelle mit dem Namen "entfernt" ... sind Sie ernst? 😛
- Natürlich bin ich mit session_start();
- Ja, ich bin der überprüfung der $sessionid, um sicherzustellen, dass es aufgerufen wird. Es hallte auf der Seite zu allen Zeiten und ist auch in jedem
die
Aussagen, die ich ausführen. - Die ERSTE Abfrage ist verantwortlich für die Erstellung der Zeilen, die ZWEITE Abfrage soll aktualisieren... also die Daten sind da.
mysql_error()
produziert nichts ... da ist einfach kein Fehler.
Wieder, ich Schätze deine Sorge, aber bisher alle Vorschläge wurden versucht und wieder versucht.
Sie haben eine Spalte "entfernt" in dieser Tabelle?
Warum Menschen nicht setzen mysql_error ist jenseits meines Verständnisses. Und er nutzt es in Verbindung zum host. Schlimmer noch Bücher in php verwendet mysql_error in Ihren Beispielen. P. s. Dein code ist sql-injection-Schwachstelle. Verwenden Sie PDO. Das ist nicht schwer und erspart Ihnen viele Kopfschmerzen später.
Ich Schätze Ihre Einsicht, aber nochmal... erschöpft. Und SQL-injection ist nicht ein Problem an dieser Stelle.
Ok. Aber haben Sie den mysql-Fehler, wie vorgeschlagen, durch die alle hier? Was ist dort geschrieben?
InformationsquelleAutor dcolumbus | 2012-02-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
mysql_error()
erhalten Sie die Fehlermeldung aus der Datenbank, wie diese:Könnte der Fehler sein, eines von vielen Dingen, wie zum Beispiel vielleicht der Benutzer nicht über die Berechtigung LÖSCHEN. Wenn Sie nicht
mysql_error()
es gibt keine Möglichkeit zu wissen, was passiert ist.Bearbeiten Die Daten in Ihre Spalte session_id sieht verdächtig kurz. Prüfen Sie, wie lange die strings zurückgegeben
session_id
sind und überprüfen Sie die Spalte Länge in der Datenbank. Einfügen von Daten, die zu lang für eine Spalte ist nicht ein Fehler sein, aber es macht beschneiden der Daten.Bearbeitet. Überprüfen Sie die Spalte definition
Das ignorieren. Es ist die richtige Länge...die Vorschau nicht angezeigt, wird der gesamte string. Denken Sie daran, ich bin in der Lage zu AKTUALISIEREN, mithilfe von SQL direkt.
Allerdings, dies gibt mir eine Idee... die Sind alle session_id die gleichen 32 md5-Länge?
Die Länge hängt von der
session.hash-bits-per-character
Einstellung: php.net/manual/en/...InformationsquelleAutor Joni
Haben Sie versucht die Kontrolle...
$sessionid
ist, wenn das Skript aufgerufen wirdKönnen Sie letzteres tun, indem Sie Ihre
die()
zu werden...Habe ich, aber es ist kein Fehler... das ist, warum. Erschöpft.
InformationsquelleAutor Amber
Keine Ahnung, warum die zweite Abfrage nicht ausgeführt. Ohne zu sehen, die Ihre Datenbank-Tabelle schema und ohne Sie veröffentlichen Sie die Inhalte auf dem server generierte Fehlermeldung, es wird wirklich schwierig sein, Sie zu unterstützen. In der Zwischenzeit, obwohl, ich hoch empfehlen Sie einen moment Zeit nehmen, einige der Forschung auf die Gefahren des SQL-Injection.
Vielleicht wollen Sie auch sicherstellen, dass Sie rufen
session_start()
vor Unordnung mitsession_id();
session_start()
... und es ist die ERSTE Abfrage, die nicht korrekt ausgeführt werden kann.InformationsquelleAutor Authman Apatira
Ein möglicher Grund, mysql_error() ist die Rückgabe leer ist, dass mehr als eine Verbindung gleichzeitig geöffnet. Ich hatte dieses Thema vor kurzem während der übertragung der Skripte auf einem neueren server/PHP-version. Versuchen Sie die Bereitstellung der Verbindung Griff in Ihrem Aufruf etwa so: mysql_error( $link )
Die Ihnen helfen sollen zu finden was der Fehler ist, und zu wissen, dass wird uns helfen, die Antwort auf Ihre Frage.
Und das, obwohl Sie erklärt, Sie nicht besorgt über injection-Angriffen - das sollten Sie IMMER ENTKOMMEN, ALLE DATEN, die von einem Benutzer/fragwürdige Quelle. Zumindest mysql_real_escape_string() um ALLE $_GET, $_POST, $_COOKIE, $_REQUEST und $_SERVER variable, die Sie in die Datenbank. Ich Verweise auf die Geschichte von little Bobby Tables...
( http://xkcd.com/327/ )
InformationsquelleAutor Steve
Deaktivieren Sie Ihr Auto increament box in die Struktur der Datenbank, dann überprüfen Sie es erneut, um zu speichern, auto-increament Struktur, Ihr problem wird gelöst werden. Ich habe diese Art von Fehler, während Sie
Fehler War
Scheint, wie diese Fehler auftreten, habe ich weggelassen kopieren
InformationsquelleAutor Mehran