phper在日常开拓中常常和mysql打交道。特殊是在没有分层的中小运用中,phper开拓要关注sql语句的实现。
入正题,上建表语句:
DROP TABLE IF EXISTS `test_sql`;

CREATE TABLE `test_sql` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` varchar(32) NOT NULL DEFAULT '0' COMMENT '名字',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='测试表';
上数据:
INSERT INTO `test_sql`
VALUES
('1', '0'),
('2', 'www.haodaquan.com'),
('3', '0'),
('4', '123'),
('5', '123php'),
('6', '123php在路上'),
('7', 'php在路上');
好了,看到的是这张表:
题目来了:请查找name值为0的数据。
于是缺点的sql出来了:
select `id`,`name` from test_sql where name=0
结果与预期不符,如下图:
为什么?
sql也是弱类型啊,比较0和字符串的时候,也是返回true的。
精确的sql:
select `id`,`name` from test_sql where name=‘0'
结论:字符类型的字段做where 条件时一定要加引号呀。
欢迎关注【php在路上】每天进步一点。
码字不随意马虎,尊重版权,转载请注明出处:头条号|PHP在路上。