Penyata PHP PDO Disediakan dengan MySQL LIKE Query
Artikel ini menangani isu menggunakan kelas PDO PHP (pemacu MySQL) untuk melakukan LIKE pertanyaan dengan pangkalan data MySQL.
Masalah timbul apabila cuba menggunakan LIKE dengan pernyataan yang disediakan, kerana sintaks yang digunakan dalam kaedah PDO execute() berbeza daripada klien MySQL.
Sintaks yang salah :
<code class="php">$ret = $prep->execute(array(':searchTerm' => '"%'.$searchTerm.'%"'));</code>
menambah petikan berganda yang tidak perlu, yang membawa kepada hasil yang salah.
Begitu juga, sintaks ini juga tidak betul:
<code class="php">$ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
kerana ia tidak mempunyai sintaks tambahan yang diperlukan untuk pernyataan yang disediakan.
Sintaks yang betul untuk melaksanakan pertanyaan LIKE dengan pernyataan yang disediakan PDO ialah:
<code class="php">$prep = $dbh->prepare($sql); $ret = $prep->execute(array(':searchTerm' => '%'.$searchTerm.'%'));</code>
Pernyataan yang disediakan menawarkan kelebihan berbanding penggabungan rentetan kerana ia melindungi daripada suntikan SQL. Mereka menganggap nilai sebagai entiti yang berasingan daripada pertanyaan, menghapuskan keperluan untuk penggabungan yang menyusahkan.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan LIKE dengan Penyata Disediakan PDO dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!