WENN SIE INNODB VERWENDEN:
Wenn Sie INNODB verwenden, sollte sie mit dem SELECT zurückgegeben worden sein, da Sie überprüft haben, dass die Zeile eingefügt wurde, solange das SELECT den Schlüssel der tatsächlich eingefügten Zeile abfragte. (Sind Sie sicher, dass Sie keine Funktion wie INSERT DELAYED verwenden? Das könnte verhindern, dass die Zeile zurückgegeben wird.)
WENN SIE MYISAM VERWENDEN:
Da MyISAM keine Transaktionen unterstützt, sollte SELECT die Einfügung zurückgeben, aber ich kann nichts finden, was besagt, dass dies tatsächlich garantiert ist.
HINWEIS:Die erste unten aufgeführte URL gibt an, wenn Sie MYISAM verwenden (der Standardwert gemäß diesem Link), INSERTS wird die Tabelle sperren. Die zweite URL besagt jedoch, dass die durch eine Einfügung gesetzte Sperre eine lesbare Sperre ist, sodass das Lesen der Tabelle nicht verhindert werden sollte.
http://www.sitepoint.com/mysql-fehler-php-entwickler/
http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html
WENN SIE INNODB VERWENDEN (FORTSETZUNG):
- Wenn AUTOCOMMIT in Ihrem System verwendet wird (ich bin mir nicht sicher), sollten Sie die ausgewählte Zeile gesehen haben (diese Frage besagt, dass die eingefügte Zeile als zur Datenbank hinzugefügt bestätigt wurde).
- Wenn eine Transaktion verwendet wird, muss die Transaktion festgeschrieben worden sein (diese Frage besagt, dass die eingefügte Zeile als zur Datenbank hinzugefügt bestätigt wurde).
Sind Sie sicher, dass die beim ersten Mal ausgeführte SELECT-Abfrage dieselbe ist wie beim zweiten Mal?
Sind Sie sicher, $user['social_id']
ist derselbe Wert nach dem INSERT und zum Zeitpunkt des SELECT?
- Wenn Sie sich auf eine Zeile beziehen, die in einer anderen Transaktion eingefügt wurde, anstatt in der Sitzung, die die Einfügung durchführt, dann diese URL:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
heißt es:"Sie müssen "Lesen ohne Commit" auswählen, um die gerade eingefügten Zeilen zu finden:"
I.E. setze Session TRANSACTION ISOLATION LEVEL read uncommitted;
http://dev.mysql.com/doc/refman /5.0/en/set-transaction.html
(Diese Funktion kann von der verwendeten MYSQL-Version abhängen)
- Wenn Sie aus irgendeinem Grund INSERT DELAYED verwenden, wird die Zeile möglicherweise nicht zurückgegeben
HINWEISE:Gemäß dieser URL werden, wenn Sie eine Transaktion gestartet haben, die ausgewählten Zeilen in der nächsten SELECT-Anweisung angezeigt (nicht in PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
Diese Anweisung impliziert, dass Sie AUTOCOMMIT nicht setzen müssen, wenn Sie eine Transaktion beginnen:
"MySQL schreibt auch automatisch Anweisungen fest, die nicht Teil einer Transaktion sind."
Diese URL beschreibt, wie Sie eine Transaktion in PHP starten:
PHP + MySQL-Transaktionsbeispiele