Penyata Disediakan PDO: Menggunakan Semula Pemegang Tempat Dinamakan
Apabila bekerja dengan PDO, adalah wajar untuk menggunakan semula pemegang tempat yang dinamakan dalam pertanyaan SQL yang disediakan. Walau bagaimanapun, ini tidak mungkin disebabkan oleh pengehadan fungsi PDO::prepare PHP.
Seperti dokumentasi PDO, "anda tidak boleh menggunakan penanda parameter bernama dengan nama yang sama dua kali dalam pernyataan yang disediakan." Ini bermakna jika anda cuba menggunakan ruang letak bernama yang sama beberapa kali dalam pertanyaan anda, seperti:
SELECT :Param FROM Table WHERE Column = :Param
...kejadian kedua ruang letak ":Param" akan digantikan dengan ruang letak yang unik nama dengan fungsi PDO::prepare. Apabila anda mengikat nilai anda pada ruang letak ":Param" menggunakan PDO::bindValue(":Param"), ia hanya akan menetapkan nilai untuk kejadian pertama pemegang tempat itu. Kejadian kedua akan kekal tidak terikat, membawa kepada ralat apabila anda melaksanakan pertanyaan.
Oleh itu, adalah tidak mungkin untuk menggunakan semula ruang letak yang dinamakan dalam pertanyaan SQL yang disediakan menggunakan PDO. Jika anda perlu mengulangi nilai yang sama beberapa kali dalam pertanyaan anda, anda boleh sama ada menggunakan ruang letak kedudukan (cth. "?", ":1", dsb.) atau mencipta berbilang kenyataan yang disediakan dengan nama pemegang tempat yang berbeza.
Atas ialah kandungan terperinci Bolehkah Penyata Disediakan PDO Menggunakan Semula Pemegang Tempat Dinamakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!