ALS U INNODB GEBRUIKT:
Als je INNODB gebruikt en je hebt geverifieerd dat de rij was ingevoegd, had deze moeten worden geretourneerd met de SELECT, zolang de SELECT de sleutel van de daadwerkelijke rij die was ingevoegd opvraagde. (Weet je zeker dat je geen functie zoals INSERT DELAYED gebruikt? Dat kan voorkomen dat de rij wordt geretourneerd.)
ALS U MYISAM GEBRUIKT:
Aangezien MyISAM geen transacties ondersteunt, zou de SELECT de insert moeten retourneren, maar ik kan niets vinden dat stelt dat dit daadwerkelijk gegarandeerd is.
OPMERKING:De eerste URL die hieronder wordt vermeld, geeft aan of u MYISAM gebruikt (de standaardinstelling volgens deze link), INSERTS zal de tabel vergrendelen. De tweede URL geeft echter aan dat het slot dat door een insert is geplaatst een leesbaar slot is, dus dat had niet moeten voorkomen dat de tabel werd gelezen.
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html
ALS U INNODB GEBRUIKT (VERVOLG):
- Als AUTOCOMMIT in uw systeem wordt gebruikt (ik weet het niet zeker), had u de geselecteerde rij moeten zien (deze vraag geeft aan dat de ingevoegde rij is geverifieerd als zijnde toegevoegd aan de database).
- Als een transactie in gebruik is, moet de transactie zijn vastgelegd (deze vraag geeft aan dat de ingevoegde rij is geverifieerd als zijnde toegevoegd aan de database).
Weet je zeker dat de SELECT-query die de eerste keer wordt uitgevoerd dezelfde is als de tweede keer?
Weet je het zeker $user['social_id']
is dezelfde waarde na de INSERT en op het moment van de SELECT?
- Als u verwijst naar een rij die is ingevoegd in een andere transactie, in plaats van in de sessie die de invoeging uitvoert, dan is deze URL:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
zegt:"u moet "lees niet-vastgelegd" selecteren om de zojuist ingevoegde rijen te vinden:"
D.W.Z. sessie instellen TRANSACTIE ISOLATIENIVEAU lezen niet vastgelegd;
http://dev.mysql.com/doc/refman /5.0/nl/set-transactie.html
(Deze functie kan afhankelijk zijn van de versie van MYSQL die wordt gebruikt)
- Als u om de een of andere reden INSERT DELAYED gebruikt, wordt de rij mogelijk niet geretourneerd
OPMERKINGEN:Volgens deze URL, ALS u een transactie bent gestart, worden de geselecteerde rijen weergegeven in de volgende SELECT-instructie (niet in PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
Deze verklaring houdt in dat als u een transactie begint, u AUTOCOMMIT niet hoeft in te stellen:
"MySQL legt ook automatisch verklaringen vast die geen deel uitmaken van een transactie."
Deze URL beschrijft hoe u een transactie in PHP start:
voorbeelden PHP + MySQL-transacties