关于phpcms中mysql和mysqli的区别
2016-01-26 16:46
525 查看
用phpcms开发一个考试成绩查询的小模块,用电脑上以前下载的phpcms版本为框架开发,一切顺利。想着下载一个最新版本,以后也免了升级的麻烦。于是,下载好,然后把模块目录、model数据库连接文件、模板以及配置文件都如数复制。
可是,问题出现了!
……调试折腾了几个小时,在新旧版本间切换数次,终于发现是phpcms版本导致的问题,我勒个去!
用exit()定位,继续研究,发现问题出在以下几行代码:
$result = $this->db->query($sql);
while($row=mysql_fetch_row($result)) {
echo $row[0].'<br />';
}
这几行代码无动于衷,毫无效果……于是,又折腾……,用gettype($result)检测出$result为对象,啥对象?不知道,凌乱……
想到了var_dump()函数。
输入var_dump($result)后,出现了object(mysqli_result)。确实是个连接资源对象,但是不是mysql连接,而是mysqli连接。
用文本搜索工具搜索,发现数据库配置文件database.php里面是这样的“'type' => 'mysqli',”;
这就是症结所在,将mysqli改为mysql,一切正常。但肯定不能改回去呀,于是百度mysqli。
原来,mysql(过程方式)和mysqli(对象方式)都使用query查询,但读取行数据的函数不一样了。
mysql(过程方式)用$row = mysql_fetch_row( $result ) 这样的方式(原来都这样用)
而mysqli(对象方式)用$row = $result -> fetch_row();这样的方式。
改过来,一切正常!
可是,问题出现了!
……调试折腾了几个小时,在新旧版本间切换数次,终于发现是phpcms版本导致的问题,我勒个去!
用exit()定位,继续研究,发现问题出在以下几行代码:
$result = $this->db->query($sql);
while($row=mysql_fetch_row($result)) {
echo $row[0].'<br />';
}
这几行代码无动于衷,毫无效果……于是,又折腾……,用gettype($result)检测出$result为对象,啥对象?不知道,凌乱……
想到了var_dump()函数。
输入var_dump($result)后,出现了object(mysqli_result)。确实是个连接资源对象,但是不是mysql连接,而是mysqli连接。
用文本搜索工具搜索,发现数据库配置文件database.php里面是这样的“'type' => 'mysqli',”;
这就是症结所在,将mysqli改为mysql,一切正常。但肯定不能改回去呀,于是百度mysqli。
原来,mysql(过程方式)和mysqli(对象方式)都使用query查询,但读取行数据的函数不一样了。
mysql(过程方式)用$row = mysql_fetch_row( $result ) 这样的方式(原来都这样用)
而mysqli(对象方式)用$row = $result -> fetch_row();这样的方式。
改过来,一切正常!
相关文章推荐
- PHP实现日志写入log.txt
- Yii 用户登录体
- 一键生成各种尺寸Icon的php脚本
- FragmentPagerAdapter API
- ThinkPHP单字母函数(快捷方法)使用总结
- 数据库--PHP环境搭建
- 【Symfony2官方文档翻译】 phpunit
- 任意类型转换为IntPtr
- EditPlus快捷键
- php常用加密函数总结
- php代码收集
- PHP数组游标实现对数组的各种操作详解
- PHP面向对象程序设计实例分析
- PHP——连接数据库初
- PHP接收post过来的xml数据
- CI框架 -- 核心文件 之 Output.php(输出类文件)
- PHP类的声明与实例化及构造方法与析构方法详解
- CI框架 -- 核心文件 之 Model.php
- Zend Framework应用程序内容转换为xml的插件
- CI框架 -- 核心文件 之 Loader.php(加载器)