Melaksanakan pertanyaan MySQL melalui pernyataan yang disediakan boleh menjadi agak rumit apabila bekerja dengan PDO. Mari kita selami isu yang dibentangkan dan temukan penyelesaiannya:
Dalam kod yang disediakan, pernyataan INSERT INTO dibina menggunakan kaedah prepare(), yang menyediakan pernyataan tetapi tidak melaksanakannya. Untuk benar-benar melaksanakan pertanyaan dan memasukkan data, kaedah execute() mesti dipanggil.
Selain itu, apabila menggunakan pernyataan yang disediakan dengan PDO, adalah penting untuk menggunakan ruang letak (cth., :name, :lastname) dalam Pertanyaan SQL dan bukannya membenamkan nilai secara langsung. Pemegang tempat membenarkan anda mengikat nilai pada pernyataan yang disediakan kemudian. Pendekatan ini meningkatkan keselamatan dengan menghalang kelemahan suntikan SQL.
Kod yang diperbetulkan sepatutnya kelihatan seperti ini:
$dbhost = "localhost"; $dbname = "pdo"; $dbusername = "root"; $dbpassword = "845625"; $link = new PDO("mysql:host=$dbhost;dbname=$dbname", "$dbusername", "$dbpassword"); $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set error mode to exception $statement = $link->prepare("INSERT INTO testtable(name, lastname, age) VALUES(:name, :lastname, :age)"); $statement->bindParam(':name', 'Bob'); $statement->bindParam(':lastname', 'Desaunois'); $statement->bindParam(':age', 18); $statement->execute();
Dengan menggunakan ruang letak dan mengikat nilai menggunakan bindParam(), pertanyaan dilaksanakan dengan betul dan data dimasukkan ke dalam pangkalan data. Penyata yang disediakan membantu menghalang suntikan SQL dan memastikan integriti data anda.
Atas ialah kandungan terperinci Bagaimana Menggunakan Penyata Disediakan PDO dengan Betul untuk INSERT INTO Queries dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!