我正在尝试使用简单的 where 子句对表进行简单的选择。基本上:
$query = "Select * from devices where device_id = 'abcdefghijklmnopqrstuvwxyz000000'";
当我尝试执行查询时,出现错误
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 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)
就足够了。
关于php - MySQL 查询不接受来自 PHP 的 char(32) 字段的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718299/