Masalah dengan memadankan baris dalam pangkalan data
P粉852114752
P粉852114752 2023-08-25 20:51:42
0
1
500

Saya ingin mendapatkan kiraan baris untuk menyemak sama ada e-mel yang sama sudah wujud dalam pangkalan data. Saya mencuba beberapa mekanisme tetapi tidak berjaya. Apabila saya menjalankan pertanyaan secara langsung dalam pangkalan data ia memberikan bilangan baris tetapi melaksanakannya melalui PDO memberikan 0.

Saya telah menggunakan kaedah fetchAll untuk mengira secara manual malah menggunakan kaedah rowCount tidak berfungsi

$sql = 'PILIH kiraan(*) DARI peti masuk DI MANA uid = DAN from_email = ?'; $result = $link->prepare($sql); $result->execute([$email_number,$email_f]); $number_of_rows = $result->fetchColumn();

Masalahnya ialah $email_f ini, yang mengandungi html

SELECT count(*) FROM inbox WHERE uid = "6961" DAN from_email = "Tawaran abc "

Ini adalah pertanyaan yang saya cetak daripada $sql dan apabila saya melaksanakannya terus dalam pangkalan data dalam phpmyadmin, ia berfungsi dengan baik. Saya diberi nombor 3, tetapi dengan melaksanakan saya mendapat 0.

P粉852114752
P粉852114752

membalas semua (1)
P粉879517403

Pertama, anda perlu menerima hakikat bahawa jika pertanyaan anda tidak menemui sebarang baris, ini bermaknatiada padanan,walaupun anda boleh bersumpah data itu betulhmm>. Apabila pertanyaan tidak mengembalikan baris, ini bermakna tiada baris yang sepadan dengan kriteria. Jadi anda perlu mengetahui - mengapa. Tetapi pertama-tama anda perlu memastikan pertanyaan anda betul:

Masalah yang disebabkan oleh ralat SQL

Pertama, anda perlu memastikan pertanyaan anda benar-benar berjalan tanpa ralat, kerana "tiada hasil" mungkin bermakna terdapat ralat dalam pertanyaan. Lihat jawapan ini untuk butiran:pdodanmysqli.

Masalah yang disebabkan oleh keadaan

Periksa keadaan anda. Terdapat syarat yang saling eksklusif, sepertiWHERE col=1 AND col=2. Ia tidak pernah mengembalikan sebarang baris. Cuba permudahkan syarat sehingga ia mula mengembalikan beberapa baris, kemudian tapis syarat untuk mendapatkan hasil yang anda inginkan.


Tetapi okey, tiada ralat, syaratnya betul, dan anda boleh bersumpah data dalam jadual sepadan dengan pertanyaan anda. Namun, terdapat beberapa perangkap:

Masalah yang disebabkan oleh data

Pertama, jika pembolehubah terlibat, pastikan iawujuddan sebenarnya mengandungi beberapa nilai.

Kemudian semak nilai itu sendiri. Mungkin terdapat beberapa aksara yang ditukar atau tidak boleh dicetak dalam data input (atau pangkalan data). Seperti pemisah baris atau simbol yang dikodkan khas, atau aksara tertentu yang ditukar kepada entiti HTML, seperti fungsi>。因此,包含 的查询永远不会匹配文本 。为了快速检查,您可以使用rawurlencode(), yang menukar semua aksara bukan Latin kepada kod, dengan itu menjadikannya kelihatan.

Masalahnya, ia hanya tekaan dan tiada siapa yang boleh memberitahu anda apa masalah sebenar kerana iapangkalan dataanda,andamasukkan data dan hanya anda yang dapat mencari masalah.

Saya menulis artikel yang menerangkancara menyahpepijat isu PDO.

Untuk nyahpepijat isu khusus yang anda perlukan

  • Pastikan pelaporan ralat penuh didayakan untuk kedua-dua PDO dan PHP. Ia sangat membantu dan boleh menunjukkan kepada anda kesilapan tipografi, kesilapan ejaan, dll.
  • Semak semula data dan input dalam pangkalan data untuk mencari percanggahan. Fungsiurlencode()akan membantu, memaparkan semua aksara yang tidak boleh dicetak dan boleh ditukar dalam pangkalan data dan input.

Masalah yang disebabkan oleh kelayakan sambungan

Satu lagi masalah biasa ialah apabila anda mempunyai berbilang pangkalan data dan menyambung ke pangkalan data yang salah yang tidak mengandungi data yang diminta. Soalan ini serupa dengansoalan ini, jadi ikuti rutin yang sama dan semak sahaja baris data dan bukannya senarai jadual.

Masalah yang disebabkan oleh set aksara/pengekodan

Ini adalah situasi yang jarang berlaku, tetapi yang pasti, ikuti senarai semak dalamjawapan hebat ini

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!