Rumah >pangkalan data >tutorial mysql >Mengapa Penyata `INSERT INTO` PDO Saya Tidak Berfungsi?
Menyelesaikan masalah PDO Disediakan Penyata untuk INSERT INTO
dalam MySQL
Menggunakan pernyataan PDO yang disediakan untuk operasi MySQL INSERT INTO
kadangkala boleh membawa kepada hasil yang tidak dijangka, seperti tiada data yang dimasukkan. Mari kita periksa punca biasa dan penyelesaiannya.
Pertimbangkan kod ini:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
Kod ini cuba memasukkan baris baharu ke dalam testtable
, tetapi selalunya gagal mengisi pangkalan data.
Pautan Hilang: Pengikat Parameter
Masalahnya terletak pada ketiadaan pengikatan parameter. Walaupun kenyataan yang disediakan meningkatkan keselamatan terhadap suntikan SQL, ia memerlukan anda menggunakan ruang letak untuk nilai dan bukannya membenamkannya secara langsung dalam pertanyaan. Ini membolehkan pelaksanaan yang lebih selamat dan cekap, terutamanya apabila menjalankan pertanyaan yang sama dengan berbilang set data.
Penyelesaian: Parameter Dinamakan dan Kedudukan
Berikut ialah dua cara untuk melaksanakan pengikatan parameter dengan betul:
1. Parameter Dinamakan:
<code class="language-php">$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ ':fname' => 'Bob', ':sname' => 'Desaunois', ':age' => '18', ]);</code>
Ini menggunakan ruang letak bernama (:fname
, :sname
, :age
) yang dipetakan kepada nilai dalam tatasusunan kaedah execute()
.
2. Parameter Kedudukan:
<code class="language-php">$statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);</code>
Ini menggunakan tanda soal (?
) sebagai ruang letak, dengan nilai sepadan yang disediakan dalam tatasusunan kaedah execute()
. Pesanan adalah penting di sini.
Kedua-dua pendekatan mengikat parameter secara berkesan, menghalang suntikan SQL dan memastikan pemasukan data yang boleh dipercayai. Pilih kaedah yang paling sesuai dengan gaya pengekodan dan keperluan projek anda. Ingat untuk sentiasa membersihkan input pengguna sebelum menggunakannya dalam pertanyaan anda, walaupun dengan pernyataan yang disediakan, untuk mengekalkan keselamatan yang optimum.
Atas ialah kandungan terperinci Mengapa Penyata `INSERT INTO` PDO Saya Tidak Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!