Rumah >pangkalan data >tutorial mysql >Mengapa Penyata Disediakan PDO Saya Gagal Memasukkan Data ke dalam MySQL?

Mengapa Penyata Disediakan PDO Saya Gagal Memasukkan Data ke dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2025-01-13 06:14:42118semak imbas

Why Are My PDO Prepared Statements Failing to Insert Data into 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn