Penyata Disediakan PDO: Apakah Tanda Titik Bertitik dalam Nama Parameter?
Pengenalan
Bila menggunakan PDO dengan parameter bernama, sesetengah pembangun menyertakan titik bertindih (:) sebelum nama parameter manakala yang lain meninggalkannya sepenuhnya. Walaupun kedua-dua pendekatan kelihatan berfungsi, kepentingan titik bertindih ini telah menjadi subjek rasa ingin tahu.
Keperluan Sintaksis
Dalam rentetan SQL, pemegang tempat yang dinamakan dikehendaki mempunyai kolon seperti yang dinyatakan dalam dokumentasi PHP. Ini kerana ia membantu dalam pengenalpastian parameter yang tidak jelas.
$insertRecord = $conn->prepare('INSERT INTO Table1 (column1, column2) VALUES(:column1, :column2)'); // ^ ^ note the colons
Kolon Pilihan dalam Pengikatan dan Pelaksanaan
Tidak seperti dalam rentetan SQL, titik bertindih adalah pilihan dalam PDOStatement:: bindParam() dan PDOStatement::execute(). Berikut ialah contoh mengikat dan melaksanakan pernyataan dengan dan tanpa titik bertindih:
$insertRecord->execute(array( ':column1' => $column1, ':column2' => $column2 )); // or $insertRecord->execute(array( 'column1' => $column1, 'column2' => $column2 ));
Mengapa Ia Berfungsi
Dengan memeriksa kod sumber PHP, kami mendapati bahawa penterjemah menjangkakan hanya satu titik bertindih dalam ruang letak. Oleh itu, :name adalah sah, manakala nama dan ::name adalah tidak sah.
Ini membolehkan penterjemah menganggap bahawa parameter bernama nama dalam bindParam() atau execute() sepatutnya ialah :name. Fail pdo_stmt.c menunjukkan tingkah laku ini. Oleh itu, PHP menambah titik bertindih secara automatik pada nama parameter yang kekurangannya.
Amalan Terbaik
Secara teknikal, kedua-dua pendekatan berfungsi. Walau bagaimanapun, untuk ketekalan, kebolehbacaan dan kemudahan carian dalam IDE, adalah dinasihatkan untuk menggunakan kolon. Pendekatan ini menghapuskan kekaburan dan selaras dengan amalan terbaik yang diterima.
Atas ialah kandungan terperinci Pernyataan Disediakan PDO: Adakah Tanda Titik Diperlukan dalam Nama Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!