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

[已解决] 换PDO要 注意什么

[复制链接]
发表于 2017-3-20 17:05:21 | 显示全部楼层 |阅读模式
CI版本是3.x的  以前就是直接用php_mysql的 现在想换成pdo_mysql  需要注意什么 是否只要修改config中database.php的配置即可 ?
 楼主| 发表于 2017-3-21 10:01:09 | 显示全部楼层

换了PDO 下面这种语句查出来就是空的。。
$this->db->select('*')
                                 ->from('article')
                                 ->where('atid',21)
                                         ->group_start()
                                         ->like('keyword','|HELLO|','both')
                                         ->or_like('keyword','HELLO|','after')
                                         ->or_like('keyword','|HELLO','before')
                                         ->group_end()
                                         ->get();
发表于 2017-3-21 10:37:19 | 显示全部楼层
nikeblue 发表于 2017-3-21 10:01
换了PDO 下面这种语句查出来就是空的。。
$this->db->select('*')
                                 ->from('article')

用 last_query() 看看具体生成的 SQL 语句是什么?
 楼主| 发表于 2017-3-21 11:02:58 | 显示全部楼层
Hex 发表于 2017-3-21 10:37
用 last_query() 看看具体生成的 SQL 语句是什么?

结果:
object(CI_DB_pdo_result)#17 (8) { ["conn_id"]=> object(PDO)#14 (0) { } ["result_id"]=> object(PDOStatement)#16 (1) { ["queryString"]=> string(177) "SELECT * FROM `sls_article` WHERE `atid` = 21 AND ( `keyword` LIKE '%|关羽|%' ESCAPE '!' OR `keyword` LIKE '关羽|%' ESCAPE '!' OR `keyword` LIKE '%|关羽' ESCAPE '!' )" } ["result_array"]=> array(0) { } ["result_object"]=> array(0) { } ["custom_result_object"]=> array(0) { } ["current_row"]=> int(0) ["num_rows"]=> NULL ["row_data"]=> NULL }




查询语句
$query=$this->db->select('*')
                                 ->from('article')
                                 ->where('atid',21)
                                         ->group_start()
                                         ->like('keyword','|关羽|','both')
                                         ->or_like('keyword','关羽|','after')
                                         ->or_like('keyword','|关羽','before')
                                         ->group_end()
                                         ->get();
var_dump($query);





是不是我用的->get 函数不对? 有没有ci pdo的函数手册
 楼主| 发表于 2017-3-21 11:04:39 | 显示全部楼层
nikeblue 发表于 2017-3-21 11:02
结果:
object(CI_DB_pdo_result)#17 (8) { ["conn_id"]=> object(PDO)#14 (0) { } ["result_id"]=> obje ...

我发现echo $query->num_rows() ; 这样是能查到总行数的
发表于 2017-3-21 12:20:25 | 显示全部楼层
nikeblue 发表于 2017-3-21 11:02
结果:
object(CI_DB_pdo_result)#17 (8) { ["conn_id"]=> object(PDO)#14 (0) { } ["result_id"]=> obje ...

没有 CI PDO 手册,CI 只有一种数据库接口,他会帮你屏蔽底层不同驱动的接口,参考手册 http://codeigniter.org.cn/user_guide/database/query_builder.htmlhttp://codeigniter.org.cn/user_guide/database/results.html

我觉得是你的 SQL 写的有问题,建议放到 phpmyadim 里测试后再使用。
 楼主| 发表于 2017-3-21 15:09:28 | 显示全部楼层
nikeblue 发表于 2017-3-21 11:04
我发现echo $query->num_rows() ; 这样是能查到总行数的

是我犯了低级错误  get后没用result  

本版积分规则