• 关于phpcms中mysql和mysqli的区别


    用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();这样的方式。

    改过来,一切正常!

  • 相关阅读:
    【转】修改mysql数据库的用户名和密码
    oracle 11g密码过期问题解决方法
    配置网络YUM源
    RedHat 7.0更新升级openSSH7.4p1
    Linux下端口被占用解决
    js function 中的返回值
    代码笔记1
    element模态框dialog中的select组件中选中无反应无显示
    vue如何使用rules对表单字段进行校验
    关于JSON.parse(JSON.stringify(obj))实现深拷贝应该注意的坑
  • 原文地址:https://www.cnblogs.com/cblx/p/5160897.html
Copyright © 2020-2023  润新知