2013-11-20 87 views
1

我試圖在PHP中這樣做,但我總是返回0行。然後在StackOverflow上搜索一段時間後,我看到一個提示,首先嚐試在SQL中執行此操作,以查看結果是否已正確返回。MySQL返回一個空結果集

我試圖在SQL中完成它,並且它始終返回一個空的結果集,即使值都在那裏。

SQL

SELECT * FROM `serials_table` WHERE `ser_key`='ABCD-EFGH-IJKL-MNOP' 

PHP

$result = $link->query("SELECT * FROM serials_table WHERE ser_key='$key'"); 

兩者都返回空值。

ser_key列設置爲文本類型,coallition:utf8_unicode_ci,空:沒有,默認值:無

串行關鍵項是在那裏和列「ser_key」存在以及表「serials_table」。此外,我直接從表中複製粘貼序列鍵並將其放入查詢中以避免任何錯誤。

我是否在表結構或其他方面犯了一些錯誤?

我不知道該怎麼做,任何幫助,將不勝感激。

+0

嘗試'SELECT * FROM serials_table WHERE ser_key'%ABCD-EFGH-IJKL-MNOP%''看看它是否是修剪問題 –

+0

您可以檢查'ser_key'列的值字段中是否有隱藏空格。 例如; 「ABCD-EFGH-IJKL-MNOP」 – vonUbisch

+0

@juergend是的,它現在正在工作。我怎樣才能避免這個問題再次發生?此外,你可以張貼這個答案,以便我可以標記爲解決?非常感謝你! –

回答

1

當這個作品

SELECT * FROM serials_table WHERE ser_key like '%ABCD-EFGH-IJKL-MNOP%' 

那麼你就領先或數據尾隨空格。

要恢復的是更新現有的表數據這樣

update serials_table 
set ser_key = trim(ser_key) 

,辦理入住手續,您插入或更新ser_key後。在那個代碼段中檢查你是否只在其中存儲了修剪過的數據。

1

嘗試

SELECT * FROM `serials_table` WHERE TRIM(`ser_key`)='ABCD-EFGH-IJKL-MNOP' 

刪除空格

UPDATE `serials_table` set `ser_key`= TRIM(`ser_key`); 
+0

我正要對TRIM說輸入 – AdRock