JIKA ANDA MENGGUNAKAN INNODB:
Jika Anda menggunakan INNODB, karena Anda memverifikasi baris yang dimasukkan, itu seharusnya dikembalikan dengan SELECT, selama SELECT menanyakan kunci dari baris aktual yang dimasukkan. (Apakah Anda yakin tidak menggunakan fitur seperti INSERT DELAYED? Itu dapat mencegah baris dikembalikan.)
JIKA ANDA MENGGUNAKAN MYISAM:
Karena MyISAM tidak mendukung transaksi, SELECT harus mengembalikan sisipan, tetapi saya tidak dapat menemukan apa pun yang menyatakan bahwa ini sebenarnya dijamin.
CATATAN:URL pertama yang tercantum di bawah ini menyatakan jika Anda menggunakan MYISAM (default menurut tautan ini), INSERTS akan mengunci tabel. Namun, URL kedua menyatakan bahwa kunci yang ditempatkan oleh sisipan adalah kunci yang dapat dibaca, sehingga seharusnya tidak mencegah tabel untuk dibaca.
http://www.sitepoint.com/mysql-mistakes-php-developers/
http://aarklondatabasetrivia .blogspot.com/2009/04/how-to-lock-and-unlock-tables-in-mysql.html
JIKA ANDA MENGGUNAKAN INNODB (LANJUT):
- Jika AUTOCOMMIT sedang digunakan di sistem Anda (saya tidak yakin), Anda seharusnya melihat baris yang dipilih (pertanyaan ini menyatakan bahwa baris yang dimasukkan telah diverifikasi sebagai telah ditambahkan ke database).
- Jika sebuah transaksi sedang digunakan, transaksi tersebut harus telah dilakukan (pertanyaan ini menyatakan bahwa baris yang dimasukkan telah diverifikasi sebagai telah ditambahkan ke database).
Apakah Anda yakin kueri SELECT yang dijalankan pertama kali sama dengan yang kedua kalinya?
Apakah Anda yakin $user['social_id']
apakah nilainya sama setelah INSERT dan pada saat SELECT?
- Jika Anda merujuk ke baris yang disisipkan dalam transaksi lain, alih-alih di sesi yang melakukan penyisipan, maka URL ini:
http://blogs. innodb.com/wp/2011/04/get-started-with-innodb-memcached-daemon-plugin/
menyatakan "Anda perlu melakukan "baca tanpa komitmen" pilih untuk menemukan baris yang baru saja dimasukkan:"
YAITU. atur sesi TRANSACTION ISOLATION LEVEL read uncommitted;
http://dev.mysql.com/doc/refman /5.0/en/set-transaction.html
(Fitur ini mungkin tergantung pada versi MYSQL yang digunakan)
- Jika, karena alasan tertentu, Anda menggunakan INSERT DELAYED, baris tidak dapat dikembalikan
CATATAN:Menurut URL ini, JIKA Anda telah memulai transaksi, baris yang dipilih akan ditampilkan pada pernyataan SELECT berikutnya (bukan di PHP):
http://zetcode.com/databases/mysqltutorial/transactions/
Pernyataan ini menyiratkan bahwa jika Anda memulai transaksi, Anda tidak perlu mengatur AUTOCOMMIT:
"MySQL juga secara otomatis melakukan pernyataan yang bukan bagian dari transaksi."
URL ini menjelaskan cara memulai transaksi di PHP: