MySQL 查询不接受来自 PHP 的 char(32) 字段的字符串


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(。

为什么表会存储值'abcdefghijklmnopqrstuvwxyz0000000',但不让我查询该值?这似乎不正确。

Id 列

的长度很小,里面有$id = 'abcdefghijklmnopqrstuvwxyz000005',你只需要改变列 ID 数据类型,也许varchar(64)就足够了。

您可能错误地键入了数据库的值?

你能检查一下吗在您的数据库中具有相同的值?