tp3.2 select查询 踩坑
来源:互联网 发布:2017 下半年 手机 知乎 编辑:程序博客网 时间:2024/06/06 04:27
本以为用过tp3.2框架写过几个项目,自认为对于tp3.2的查询方式已经是比较熟悉和了解,但是在某次做项目中一个查询出了错,找了好久才找到了问题。
先来看看问题
$value="test"; //查询1 $result=M('test')->where("value='$value'")->find(); if($result) { echo "true"; } else { echo "false"; } //查询2 $result=M('test')->where("value=".$value)->find(); if($result) { echo "true"; } else { echo "false"; } //查询3 $data['value']=$value; $result=M('test')->where($data)->find(); if($result) { echo "true"; } else { echo "false"; }
以上三种查询方式,哪种能够正确执行呢?
经测试查询1和查询3均能正确查询,但查询2直接报错。
错误如下:
错误显示找不到’test’是哪一列?
是不能用查询2的方式查询吗?真正让我困惑的地方就是在这里,因为我通常都会用查询2的方式查数据库,但是这次却报错了,很费解。
于是我将查询语句打印出来,结果如下:
SELECT * FROM `test` WHERE ( value=test ) LIMIT 1
而正常的查询语句如下:
SELECT * FROM `test` WHERE ( value='test' ) LIMIT 1
发现只是一对引号的区别,而导致的错误。
错误分析:查询内容如果没加引号会被认为是字段名,所以才会出现’不知道该字段在哪列’的错误提示,因为数据库本就没有这个字段 。
当然上面的分析还有一个前提,那就是当查询的内容为字符串时却没有加引号,就会导致报错,但是如果要查询的内容是数字的话,那么就不会报错,也就是说查询2的查询方式不适用对字符串的查询。(数字字符串除外)
阅读全文
0 0
- tp3.2 select查询 踩坑
- tp3.2 多字段模糊查询
- tp3.2中jquery查询订单信息
- TP3.2.3 Join 查询
- 自学tp3.2-基础
- TP3.2PHPExcel导出
- tp3.2登录退出
- tp3.2中微信支付
- tp3.2 引用赋值
- tp3.2中递归
- tp3.2路由定义
- TP3.2数据库转换
- tp3.2zfb
- tp3.2 缓存
- tp3.2切换数据库
- TP3.2_MVC
- TP3.2_1
- Tp3.2 学习
- Lintcode91 Minimum Adjustment Cost solution 题解
- Linux系统日志以及日志同步设置
- Exception sending context initialized event to listener instance of class org.springframework.web.c
- 电路板线路板PCB开发设计分享教程之(3)--一款实用的工具Protel DXP
- 精通Excel数据统计和分析
- tp3.2 select查询 踩坑
- centos7 RTNETLINK answers: File exists 解决办法
- 明确买房目的是买房的名列前茅步 买得起也要住得起
- 求逆序对
- HDU3152 Obstacle Course(BFS)
- 原生js实现AJAX(二)
- 求余数
- 月光族买房技巧:考虑这些避免被生活所累!
- cordova network-information插件