Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul untuk Pertanyaan SEPERTI MySQL?

Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul untuk Pertanyaan SEPERTI MySQL?

Susan Sarandon
Susan Sarandonasal
2024-10-31 02:05:29385semak imbas

How to Correctly Use PDO Prepared Statements for MySQL LIKE Queries?

Penyata PHP PDO Disediakan: MySQL LIKE Query

Apabila melakukan pertanyaan LIKE menggunakan kelas PDO PHP, adalah penting untuk mengendalikan operator LIKE dengan betul dan sediakan pernyataan dengan betul.

Masalah: Dalam kod yang disediakan, pertanyaan asal berfungsi menggunakan klien MySQL tetapi menghadapi masalah apabila dipindahkan ke PHP.

Penyelesaian: Ralat terletak pada klausa WHERE dalam kaedah penyediaan. Baris berikut adalah salah:

<code class="php">$ret = $prep->execute(array(':searchTerm' => '"%' . $searchTerm . '"%'));
$ret = $prep->execute(array(':searchTerm' => "%:searchTerm%"));
$ret = $prep->execute(array(':searchTerm' => ':' . $searchTerm . '%'));</code>

Penjelasan:

  • Pernyataan yang disediakan: Mereka mengangkut data secara berasingan daripada pertanyaan, membuat petikan yang tidak diperlukan semasa membenamkan nilai.
  • LIKE operator: Memerlukan aksara kad bebas, seperti % atau _, untuk mewakili jujukan aksara arbitrari.
  • Pertanyaan yang betul: Klausa WHERE yang betul hendaklah:
<code class="php">WHERE hs.hs_text LIKE :searchTerm</code>

Dan pernyataan yang disediakan hendaklah dilaksanakan seperti berikut:

<code class="php">$ret = $prep->execute(array(':searchTerm' => '%' . $searchTerm . '%'));</code>

Sekarang, pertanyaan harus mengembalikan hasil yang diingini .

Atas ialah kandungan terperinci Bagaimana Menggunakan Pernyataan PDO yang Disediakan dengan betul untuk Pertanyaan SEPERTI MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn