Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan Padanan Baris Pangkalan Data PDO Saya Mengembalikan Sifar Walaupun Padanan Wujud?

Mengapa Pertanyaan Padanan Baris Pangkalan Data PDO Saya Mengembalikan Sifar Walaupun Padanan Wujud?

Patricia Arquette
Lepaskan: 2024-12-18 17:20:12
asal
210 orang telah melayarinya

Why Does My PDO Database Row Matching Query Return Zero Even When Matches Exist?

Memadankan Baris dalam Pangkalan Data dengan PDO: Isu Penyelesaian Masalah

Apabila cuba menyemak baris pendua dalam pangkalan data menggunakan PDO, anda mungkin menghadapi senario di mana keputusan berbeza daripada jangkaan anda. Berikut ialah potensi masalah dan penyelesaian untuk dipertimbangkan:

Masalah yang Disebabkan oleh Ralat SQL

Sahkan bahawa pertanyaan anda dilaksanakan tanpa ralat. PDO boleh mengembalikan '0' sebagai pengiraan keputusan walaupun tiada padanan, menunjukkan isu pertanyaan.

Masalah yang Disebabkan oleh Keadaan

Semak syarat pertanyaan anda untuk eksklusif. Keadaan seperti "WHERE col=1 AND col=2" akan sentiasa mengembalikan '0'. Permudahkan syarat untuk mengasingkan isu.

Masalah yang Disebabkan oleh Data

  • Pastikan pembolehubah yang terlibat dalam pertanyaan wujud dan mengandungi nilai.
  • Semak aksara yang tidak boleh dicetak atau ditukar dalam data input. Ekodkan aksara ini menggunakan rawurlencode() untuk menjadikannya kelihatan.

Petua Penyahpepijatan

  • Dayakan pelaporan ralat penuh untuk kedua-dua PDO dan PHP.
  • Periksa data dalam pangkalan data dan nilai input untuk perbezaan. Gunakan urlencode() untuk mendedahkan aksara yang tidak boleh dicetak.
  • Pastikan anda disambungkan ke pangkalan data yang betul.
  • Sahkan set aksara dan konfigurasi pengekodan untuk pangkalan data dan PHP.

Contoh Isu dan Penyelesaian

Anda pertanyaan termasuk rentetan dengan entiti HTML, seperti "SELECT count(*) FROM inbox WHERE ... AND from_email = "abc Offers <[email protected]>"". Apabila dilaksanakan dalam phpMyAdmin, pertanyaan ini berfungsi, tetapi mengembalikan '0' melalui PDO. Entiti HTML ("<" dan ">" ditukar kepada entiti) menyebabkan ketidakpadanan. Mengubah suai pertanyaan untuk mengalih keluar entiti ini menyelesaikan isu:

$sql = 'SELECT count(*) FROM inbox WHERE uid = ? AND from_email = "abc Offers [email&#160;protected]"';
$result = $link->prepare($sql); 
$result->execute([$email_number,$email_f]); 
$number_of_rows = $result->fetchColumn();
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Pertanyaan Padanan Baris Pangkalan Data PDO Saya Mengembalikan Sifar Walaupun Padanan Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan