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

标签 php mysql sql

我正在尝试使用简单的 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/

相关文章:

php - MySQL数据类型的用途

Java Driver.getConnection() 在实时系统上从 mysql 产生 "Connection Refused",而不是开发

sql - 从 View 中选择所有字段的所有平均值而不指定字段名称

具有多个 INNER JOIN 的 MySQL 查询

sql - 查看 SQL Server 2008 中的所有事务日志

PHP如何从mysql转换日期?

php - 以编程方式登录+记住我

php - 基于 MySQL 的 table1_id 中的 ORDER BY SUM?

php - fatal error :调用未定义的方法 mysqli_stmt::get_result()

MySQL - 我如何知道我的查询已调整?