当前位置:主页 > 建站系统 > discuz >

Discuz运行sql语句函数runquery($sql)

栏目:discuz 来源: 微信小程序开发网 阅读: 2016-07-03

函数:runquery($sql)

参数:$sql sql语句

位置:/install/include/install_function.php

作用:执行sql语句


  这个函数跟函数runucquery($sql, $tablepre) 绝大多数代码是一样,所以,这里只把它们之间的不同之处,进行解释说明。这个函数只是discuz用来做数据测试用的,所以,参数只有一个,而不像runucquery函数那样还有表前缀参数,但是,这个函数是也一样处理表前缀,只是这个表前缀是通过外部获取的。


代码分析开始:

  1. 声明全局变量:

  global $lang, $tablepre, $db;

 2. 用安装时定义的表前缀替换在php文件/install/include/install_var.php里面定义的表前缀(在这php文件里面定义的表前缀是pre_),然后,替换\r为\n,这里处理sql语句里面的表前缀时,用了两种方式:

    $sql = str_replace("\r", "\n", str_replace(' '.ORIG_TABLEPRE, ' '.$tablepre, $sql));
    $sql = str_replace("\r", "\n", str_replace(' `'.ORIG_TABLEPRE, ' `'.$tablepre, $sql));

 这两个唯一区别是,如果表前缀是有符号“`”的,则也一起替换,这样才能保证不会出错。


  3. 其它的代码跟函数runucquery完全一样,这些代码已经在runucquery函数里面详细分析了,如果不懂的请再去研究一下这个函数。