3.2.1 - 严重 - 未处理
情景:1.pdo查询,参数化
2.define('APP_DEBUG', false);
3.错误提示:pdo参数化 由于没有初始化dbType,导致where 条件的var=:var 成为var=''或var=0
4.错误原因:官方你自己去找吧,懒得说
5.修改方案
5.1代码位置:ThinkPHP\Library\Think\Db\Driver\Pdo.class.php
5.2修改方案:修改escapeString方法
/**
* SQL指令安全过滤
* @access public
* @param string $str SQL指令
* @return string
*/
public function escapeString($str) {
//修改成如下代码
$type=$this->dbType;
if(empty($type)){
$type=$this->_getDsnType(C('DB_DSN'));
}
switch($type) {
case 'MSSQL':
case 'SQLSRV':
case 'MYSQL':
return addslashes($str);
case 'PGSQL':
case 'IBASE':
case 'SQLITE':
case 'ORACLE':
case 'OCI':
return str_ireplace("'", "''", $str);
}
}