zen-cart网站,模版,采集,二次开发

首页 » ZenCart » ZenCart分析 » 阅读文章

ZenCart数据库类中特定字符串替换函数bindVars()

2012-08-25 23:58 25704 0 发表评论
标签:


在分析zencart源码中会经常看到一些较长的sql语句中出现如:languagesID之类的特定字符,这些字符不是sql的语句字符。需要借助bindVars()函数来实现价值

bindVars()位于includes\classes\db\mysql\query_factory.php第433行,作用:将sql语句中的特定字符替换为有意义的字符,在一些使用较长的sql语句中从而避免出错

参数 作用
$sql sql语句
$bindVarString 被替换的字符串
$bindVarValue 替换为的字符串
$bindVarType 数据类型
$debug 调试开关

数据原型

  function bindVars($sql, $bindVarString, $bindVarValue, $bindVarType, $debug = false) {
    $bindVarTypeArray = explode(':', $bindVarType);
    $sqlNew = $this->getBindVarValue($bindVarValue, $bindVarType);
    $sqlNew = str_replace($bindVarString, $sqlNew, $sql);
    return $sqlNew;
  }

例如

有的sql语句中会出现这么一段

$sql=...AND cd.language_id = :languagesID ...;
$sql = $db->bindVars($sql, ':languagesID', $_SESSION['languages_id'], 'integer');

函数的作用就是将:languagesID替换为$_SESSION['languages_id'],integer整型

相关日志:

评论 共0条 (RSS 2.0) 发表评论

  1. 暂无评论,快抢沙发吧。

发表评论

  • 
  • 插入代码

联系我 Contact Me

回到页首