用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3927|回复: 6
收起左侧

[数据库] 高手们。。关于mysql用codeigniter实现语句的写法

[复制链接]
发表于 2010-3-25 12:57:47 | 显示全部楼层 |阅读模式
如题:
1. select prod_name from products;                    /*sql语句*/
        $this->db->select('prod_name');         /*  c i   */
        $query=$this->db->get('products');

那这些怎么写??
select concat(vend_name,'(',vend_country,')') from vendors order by vend_name;

select prod_id,pro_name from peoducts where prod_name like'j%t';

select prod_id,pro_name from peoducts where prod_name like'_jt';

select prod_name from products where prod_name regexp '1000' order_by prod_name;

$this->db->query('select concat(vend_name,'(',vend_country,')') from vendors order by vend_name;');


帮个忙啦~~~~~~~~~~~
发表于 2010-3-25 13:22:57 | 显示全部楼层
本帖最后由 zycbob 于 2010-3-25 14:27 编辑

http://codeigniter.org.cn/user_guide/database/active_record.html

$this->db->select() 可接受一个可选的第二个参数。如果你把它设为FALSE, CodeIgniter 将不会使用反引号保护你的字段或者表名 。这在进行复合查询时很有用。$this->db->select("concat(`vend_name`,'(',`vend_country`,')') as new_name", FALSE);

复杂的就用
$query = $this->db->query("要执行的 SQL");吧
 楼主| 发表于 2010-3-25 14:35:42 | 显示全部楼层
好,非常好,顺便问下
select cust_id from orders where order_num in(select order_num from orderitems where prod_id ='tnt2');
这个呢??
子查询不会也是这样的吧?
发表于 2010-3-25 14:54:53 | 显示全部楼层
$pro_id = 'tnt2'; // 參數進來
$sql = 'SELECT `cust_id` FROM `orders` WHERE `order_num` IN (SELECT `order_num` FROM `orderitems` WHERE `prod_id`= ?);'; //sql
$query = $this->db->query(sql,array($pro_id));
 楼主| 发表于 2010-3-25 15:42:17 | 显示全部楼层
我。。。。有看没懂。。。
发表于 2010-3-25 16:09:04 | 显示全部楼层
我寫的東西就是給2樓的一個補充而已,主要就是用 $this->db->query() 方法。
sql 語句反正你很熟練了,單獨組織成 $sql , 其中條件參數可以全部用?代替
query($sql,$param) 的第一個參數是需要執行的Sql語句,第二個是參數數組(根據?的數量和順序),ci 會幫你識辨參數類型的。

有問題請高手指正,我也是新人
 楼主| 发表于 2010-3-25 17:53:58 | 显示全部楼层
回复 6# DasOmen


       厉害。。我似乎是明白了

本版积分规则