mysql sorgu elle çalışıyor ama kod çalıştığında sonuç verir

3 Cevap php

Ben onun adıyla ürünü bulmak için "Beğen" ile çok basit bir sorgu kullanın

SELECT p_pid, p_name, p_cat
FROM products
WHERE p_sid=346 AND p_name LIKE 'product name here in utf-8 encoding, can be various languages'
LIMIT 1

Ben geçerli bir ürün adı ile koddan Bu sorguyu çalıştırdığınızda, ben sonuç yok olsun. Ben (tarayıcıya php ile yankılandı) sorgu kopyalayın ve mysql sorgu tarayıcıda elle çalıştırmak eğer ben bir sonuç alabilirim. Yanılıyorsam herhangi bir fikir?

Notlar:

1.There is no error coming from the query. Just no results. 2. I'm using ezsql library 3. The code runs well and perform other SELECTs with the database successfully in the same scope in the code.

3 Cevap

Kodlama ile sorun gibi görünüyor.

Bu sorguyu çalıştırmayı deneyin:

SELECT HEX(CAST('product name here in utf-8 encoding, can be various languages' AS BINARY))

hem de ezSQL ve sorgu tarayıcı ve sonuçları karşılaştırın.

Bu size MySQL gerçekten karşılaştırıldığında müşteri aldığı ve kullandığı ikili akış verecektir.

Eğer ezSQL özelliklerinde yanlış bağlantı kodlama ayarlarsanız, dize (gibi soru işaretleri yerine UTF sembolleri) karıştırılmış alabilirsiniz.

Bu durumda karşılaştırıldığında elbette başarısız olur.

Update:

Harf duyarsız harmanlama zorlamak için deneyin:

SELECT  *
FROM    table
WHERE   field LIKE 'product name here in utf-8 encoding, can be various languages' COLLATE UTF8_GENERAL_CI

Ayrıca, ikili dökümü dize ve alanında bulunan iki veri gönderebilir misiniz?

SELECT  p_pid, p_name, p_cat,
        HEX(CAST(p_name AS BINARY)),
        HEX(CAST('product name here in utf-8 encoding, can be various languages' AS BINARY))
FROM    products
WHERE   p_pid = @pid_of_product_that_should_match_but_it_doesnt

Makine, veri tabanı ve kullanıcı manuel ve otomatik olarak çalışan bir komut dosyası arasında aynı mı? Diğer üretim sunucuya erişen ise bir sınama sunucusuna erişen olabilir (örneğin.)

Bu kod ile doğru bilgi göndererek, bu yüzden bir şey ararken değil, bir kodlama hatası olabilir, bu nedenle bir hata olmaması değil, o arıyor ne demek olduğunu. , Elle kodu ile tarayın yeniden do bit ve bir sorun olabilir bir şey orada nokta olmadığını görmek.

Bir kodlama hatası olarak görünüyor eğer PHP parçacıkları yardımcı olabilir.

Bu yardımcı olur umarım.