2013-11-20 167 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