POKUD POUŽÍVÁTE INNODB:
Pokud používáte INNODB, protože jste ověřili, že řádek byl vložen, měl být vrácen pomocí SELECT, pokud SELECT dotazoval klíč skutečného řádku, který byl vložen. (Jste si jisti, že nepoužíváte funkci jako INSERT DELAYED? Ta by mohla zabránit vrácení řádku.)
POKUD POUŽÍVÁTE MYISAM:
Protože MyISAM nepodporuje transakce, SELECT by měl vrátit vložku, ale nemohu najít nic, co by tvrdilo, že je to skutečně zaručeno.
POZNÁMKA:První níže uvedená adresa URL uvádí, že pokud používáte MYISAM (výchozí nastavení podle tohoto odkazu), INSERTS tabulku uzamkne. Druhá adresa URL však uvádí, že zámek umístěný vložkou je čitelný zámek, takže to nemělo bránit čtení tabulky.
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html
POKUD POUŽÍVÁTE INNODB (POKRAČOVÁNÍ):
- Pokud se ve vašem systému používá AUTOCOMMIT (nejsem si jistý), měli byste vidět vybraný řádek (tato otázka uvádí, že vložený řádek byl ověřen jako přidán do databáze).
- Pokud se transakce používá, transakce musí být potvrzena (tato otázka uvádí, že vložený řádek byl ověřen jako přidán do databáze).
Jste si jisti, že dotaz SELECT, který se provede poprvé, je stejný jako dotaz podruhé?
Jste si jisti $user['social_id']
? je stejná hodnota po INSERT a v době SELECT?
- Pokud odkazujete na řádek vložený do jiné transakce, nikoli do relace, která vkládání provádí, pak tato adresa URL:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
uvádí „budete muset provést výběr „číst bez potvrzení“, abyste našli právě vložené řádky:“
TJ. nastavit relaci ÚROVEŇ IZOLACE TRANSAKCE čtení bez potvrzení;
http://dev.mysql.com/doc/refman /5.0/cs/set-transaction.html
(Tato funkce může záviset na používané verzi MYSQL)
- Pokud z nějakého důvodu používáte INSERT DELAYED, řádek nemusí být vrácen
POZNÁMKY:Podle této adresy URL, POKUD jste zahájili transakci, vybrané řádky se zobrazí v dalším příkazu SELECT (ne v PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
Toto prohlášení znamená, že pokud zahájíte transakci, nemusíte nastavovat AUTOCOMMIT:
"MySQL také automaticky potvrzuje příkazy, které nejsou součástí transakce."
Tato adresa URL popisuje, jak zahájit transakci v PHP:
Příklady transakcí PHP + MySQL