Rumah >pangkalan data >tutorial mysql >Mengapa Penyata Disediakan PDO Saya Gagal Memasukkan Data ke dalam MySQL?
Menyelesaikan masalah Sisipan Penyata Disediakan PDO dalam MySQL
Menggunakan PDO PHP dengan pernyataan yang disediakan MySQL menawarkan keselamatan dan kecekapan, tetapi isu pemasukan boleh timbul. Panduan ini menangani masalah biasa: sisipan gagal walaupun kod kelihatan betul.
Masalahnya: Pangkalan Data Kosong Selepas INSERT
Percubaan
Mari kita periksa senario di mana INSERT
menggunakan pernyataan yang disediakan tidak mengisi pangkalan data:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();</code>
Kod ini kelihatan berfungsi, namun testtable
kekal kosong.
Penyelesaian: Pengikatan Parameter
Penyelesaian melibatkan parameter mengikat dengan betul. Pernyataan yang disediakan oleh PDO memerlukan ruang letak—sama ada parameter bernama (:param
) atau tanda soal (?
)—dalam pertanyaan SQL. Pemegang tempat ini kemudiannya diisi dengan nilai semasa kaedah execute()
.
Berikut ialah cara untuk membetulkan kod menggunakan kedua-dua kaedah:
<code class="language-php">// Using Named Parameters $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute(['fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18']); // Using Question Mark Placeholders $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (?, ?, ?)'); $statement->execute(['Bob', 'Desaunois', '18']);</code>
Dengan menggunakan pengikatan parameter, anda memastikan data dimasukkan dengan selamat, mengurangkan risiko suntikan SQL dan mengekalkan integriti data. Nilai digantikan dengan betul ke dalam pertanyaan semasa pelaksanaan.
Atas ialah kandungan terperinci Mengapa Penyata Disediakan PDO Saya Gagal Memasukkan Data ke dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!