Ralat Penyata Disediakan dengan INSERT INTO dalam PDO
Semasa menavigasi kerumitan PDO, anda mungkin menghadapi kesukaran menggunakan pernyataan yang disediakan untuk pertanyaan MySQL. Pertimbangkan kod berikut:
$dbhost = "localhost"; $dbname = "pdo"; $dbusername = "root"; $dbpassword = "845625"; $link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword"); $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES('Bob','Desaunois','18')"); $statement->execute();
Walaupun mengikut pendekatan ini, pangkalan data anda tetap kosong.
Penyelesaian terletak pada penggunaan pernyataan yang disediakan yang sesuai. Sebaliknya, gunakan yang berikut:
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $statement = $link->prepare('INSERT INTO testtable (name, lastname, age) VALUES (:fname, :sname, :age)'); $statement->execute([ 'fname' => 'Bob', 'sname' => 'Desaunois', 'age' => '18', ]);
Pernyataan yang disediakan memberikan sanitasi input. Gunakan ruang letak ':parameter' dalam pernyataan SQL anda dan lulus tatasusunan bersekutu parameter ini dalam fungsi 'laksanakan'. Sebagai alternatif, gunakan '?' pemegang tempat dan lulus tatasusunan nilai.
Kedua-dua kaedah menawarkan kebaikan dan keburukan. Nama parameter pengikatan meningkatkan kebolehbacaan, manakala kaedah yang terakhir memudahkan kod.
Atas ialah kandungan terperinci Mengapakah Penyata Disediakan PDO saya Gagal untuk INSERT ke dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!