[英]MySQL query not accepting string for char(32) field from PHP
我试图用一个简单的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)。
为什么表将存储值'abcdefghijklmnopqrstuvwxyz000000',但不允许我查询该值? 这似乎不正确。
Id列的长度很小,以使其具有$id = 'abcdefghijklmnopqrstuvwxyz000005'
,您只需更改列ID数据类型,也许varchar(64)
就足够了。
您可能在数据库中输入了错误的值?
您可以检查这与你的数据库相同的价值观?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.