它永远不会工作。当我对sql查询进行var转储时,我发现问号仍然在其中。这意味着值没有绑定好?
我不明白为什么它不绑定这些值。
有人能帮我吗?
PHP
$ruleValue = "value1";
$input = "value2";
$inputValue = "value3";
$this->_db->query('SELECT * FROM ? WHERE ? = ?', array($ruleValue, $input, $inputValue));
方法
public function query($sql, $params = array()) {
$this->_error = false;
if($this->_query = $this->_pdo->prepare($sql)) {
$x = 1;
if(count($params)) {
foreach($params as $param) {
$this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute()) {
$this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
} else {
$this->_error = true;
}
var_dump($this->_query);
}
return $this;
}
var_dump
object(PDOStatement)#5 (1) { ["queryString"]=> string(27) "SELECT * FROM ? WHERE ? = ?" }
您的代码:
$ruleValue = "value1";
$input = "value2";
$inputValue = "value3";
$this->_db->query('SELECT * FROM ? WHERE ? = ?', array($ruleValue, $input, $inputValue)
4行
不安全
拯救州->你为自己挖的巨大陷阱
从不工作
常规PDO
$stmt = $this->db->prepare('SELECT * FROM value1 WHERE value2 = ?')
$stmt->execute([$value3]);
$results = $stmt->fetchAll();
3行
安全
无国籍的工作
结论:获取此恶意函数的RID并使用原始PDO