表结构
goods表
字段名 | 说明 |
---|---|
goods_id | 主键 |
goods_name | 商品名称 |
category表
字段名 | 说明 |
---|---|
category_id | 主键名称 |
category_name | 分类名称 |
sql语句
select c.cate_name,c.cate_id,g.goods_id
from goods as g,category as c
where c.cate_id=g.cate_id and g.supplier_id={$supplier_id};
其中的supplier_id
是额外传入的参数。
情况分析
然后我在TP的Model中写了下面的筛选条件:
$table=array(
'goods'=>'g',
'category'=>'c'
);
$field=array(
'c.cate_id',
'c.cate_name',
'g.goods_id'
);
// 这里就被坑了!!!
$where=array(
'g.cate_id'=>'c.cate_id',
'g.supplier_id'=>$supplier_id
);
$cateInfo=$this->table($table)->field($field)->where($where)->select();
然后就是查不到数据,之后我就很崩溃啊,直接把sql
语句打印出来看,跟上面的机构是一样的,就是多了几个单引号和双引号而已,而且把单引号和双引号去掉之后,拿到MySQL
命令行中去运行,也是能得出数据的,这时真的是崩溃+崩溃,后来虽然不知道原因在哪里,但是也修改过来了:
$where_sql="c.cate_id=g.cate_id and g.supplier_id={$supplier_id}";
直接写SQL语句,不要使用数组形式!这样至少在我的电脑上读取的值是正确的。鬼畜啊!