Rumah >pangkalan data >tutorial mysql >Mengapa PDO Saya Tidak INSERT IN TO Prepared Statement Berfungsi?
Objek Data PHP (PDO) menawarkan pernyataan yang disediakan untuk interaksi MySQL yang selamat, tetapi membina INSERT INTO
pertanyaan boleh mencabar. Mari kita atasi isu 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 yang kelihatan betul ini sering gagal mengisi pangkalan data. Kenapa?
Kuncinya ialah pengikatan parameter. Ini menghalang kelemahan suntikan SQL dan meningkatkan kebolehselenggaraan kod. Daripada membenamkan nilai secara langsung, PDO menggunakan ruang letak:
:name
dalam SQL dan berikan nilai dalam tatasusunan bersekutu kepada execute()
.?
sebagai ruang letak dan bekalkan nilai dalam tatasusunan yang diindeks secara berangka kepada execute()
.Berikut ialah kod yang diperbetulkan menggunakan parameter bernama:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (:name, :lastname, :age)"); $statement->execute([ 'name' => 'Bob', 'lastname' => 'Desaunois', 'age' => '18', ]);</code>
Dan inilah persamaannya menggunakan parameter kedudukan:
<code class="language-php">$statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES (?, ?, ?)"); $statement->execute(['Bob', 'Desaunois', '18']);</code>
Pengikatan parameter meningkatkan keselamatan pangkalan data dan menjadikan kod anda lebih cekap dan boleh dibaca. Ia penting untuk penggunaan PDO yang mantap. Menguasai teknik ini adalah penting untuk pengaturcaraan pangkalan data PHP yang selamat dan berkesan.
Atas ialah kandungan terperinci Mengapa PDO Saya Tidak INSERT IN TO Prepared Statement Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!