我正在尝试使用简单的 where 子句对表进行简单的选择。基本上:
$query = "Select * from devices where device_id = 'abcdefghijklmnopqrstuvwxyz000000'";
当我尝试执行查询时,出现错误
您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 128 行的 '' 附近使用的正确语法
如果我将$id
缩短 1 个字符,它可以工作,或者如果我尝试查询其他字段,那就没问题了。显然,这与存储在表中的数据类型有关。字段device_id是char(32)
,所以我理解查询是否不会采用大于该长度的值,但$id
的长度为 32。
即使从 phpMyAdmin 中的device_id
列复制值并将其粘贴为我的 php 中的$id
值也不起作用。似乎有些腥...这是怎么回事,我该如何解决?
我得到了一些关于更改数据类型的评论,并指出'abcdefghijklmnopqrstuvwxyz000000'太大而无法存储在表中。然而,事实并非如此。
让我澄清一下我的问题:
存储在数据库的此列中的值是'abcdefghijklmnopqrstuvwxyz000000'。我的查询中的值是完全相同的值:"abcdefghijklmnopqrstuvwxyz000000";
两者都有 strlen 为 32,该列的数据类型为 char(32(。
为什么表会存储值'abcdefghijklmnopqrstuvwxyz0000000',但不让我查询该值?这似乎不正确。
Id 列
的长度很小,里面有$id = 'abcdefghijklmnopqrstuvwxyz000005'
,你只需要改变列 ID 数据类型,也许varchar(64)
就足够了。
您可能错误地键入了数据库的值?
你能检查一下吗在您的数据库中具有相同的值?