АКО ИЗПОЛЗВАТЕ INNODB:
Ако използвате INNODB, тъй като сте потвърдили, че редът е вмъкнат, той трябваше да бъде върнат с SELECT, стига SELECT да е запитвал ключа на действителния ред, който е бил вмъкнат. (Сигурни ли сте, че не използвате функция като INSERT DELAYED? Това може да попречи на връщането на реда.)
АКО ИЗПОЛЗВАТЕ MYISAM:
Тъй като MyISAM не поддържа транзакции, SELECT трябва да върне вмъкването, но не мога да намеря нищо, което гласи, че това всъщност е гарантирано.
ЗАБЕЛЕЖКА:Първият URL адрес, изброен по-долу, посочва дали използвате MYISAM (по подразбиране според тази връзка), INSERTS ще заключи таблицата. Въпреки това, вторият URL адрес гласи, че заключването, поставено от вмъкване, е четливо заключване, така че това не би трябвало да попречи на четенето на таблицата.
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html
АКО ИЗПОЛЗВАТЕ INNODB (ПРОДЪЛЖАВА):
- Ако AUTOCOMMIT се използва във вашата система (не съм сигурен), трябва да сте видели избрания ред (този въпрос гласи, че вмъкнатият ред е проверен като добавен към базата данни).
- Ако се използва транзакция, транзакцията трябва да е била ангажирана (това въпрос показва, че вмъкнатият ред е проверен като добавен към базата данни).
Сигурни ли сте, че заявката SELECT, която се изпълнява първия път, е същата като тази втория път?
Сигурни ли сте, че $user['social_id']
е същата стойност след INSERT и по време на SELECT?
- Ако имате предвид ред, вмъкнат в друга транзакция, вместо в сесията, която извършва вмъкването, тогава този URL адрес:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
заявява "ще трябва да изберете "read uncommitted", за да намерите току-що вмъкнатите редове:"
I.E. задаване на сесия НИВО НА ИЗОЛАЦИЯ НА ТРАНЗАКЦИЯ четене без ангажимент;
http://dev.mysql.com/doc/refman /5.0/bg/set-transaction.html
(Тази функция може да зависи от използваната версия на MYSQL)
- Ако по някаква причина използвате INSERT DELAYED, редът може да не бъде върнат
БЕЛЕЖКИ:Съгласно този URL адрес, АКО сте стартирали транзакция, избраните редове се показват в следващия оператор SELECT (не в PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
Това изявление предполага, че ако започнете транзакция, не е необходимо да задавате AUTOCOMMIT:
"MySQL също така автоматично записва изрази, които не са част от транзакция."
Този URL адрес описва как да стартирате транзакция в PHP:
Примери за PHP + MySQL транзакции