首页 » ZenCart » ZenCart分析 » 阅读文章
ZenCart数据库类中特定字符串替换函数bindVars()
在分析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整型
声明: 本文由Ezencart原创,转载请保留链接:ZenCart数据库类中特定字符串替换函数bindVars()





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