php – 将字符串与数字字段进行比较,返回意外结果

前端之家收集整理的这篇文章主要介绍了php – 将字符串与数字字段进行比较,返回意外结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
鉴于表:
CREATE TABLE IF NOT EXISTS `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(100) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

添加几行:

INSERT INTO `users` (`id`,`name`) VALUES (NULL,'Bob'),(NULL,'Larry'),'Steve');

为什么,OH为什么!此查询是否返回结果:

SELECT * FROM `users` WHERE id = "2this-is-not a numeric value"

结果:

query returned 1 row(s) in 0.0003 sec
id  name
-----------------
2   Larry

where子句中使用的字符串显然被转换为数值 – 谁说这样做?!我找不到任何暗示MysqLPHP会假定自动转换我的字符串文字的文档.

这仅在数字字符是字符串中的第一个字符时才有效,“此2不是数字”不会返回结果. “12 2”将变为12,“1 2”(单空格2)变为1.

任何解释此行为的文章或文档将不胜感激.

这是在MysqL文档中:
@L_301_0@

猜你在找的PHP相关文章