我遇到了绑定多个值的问题。我已经尝试了一个值,它运行正常。我错过了什么?
当我运行Query时,它给出了一个错误: 警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:绑定变量数与第35行中C:\ xampp \ htdocs \ Media \ admin \ dashboard \ classes \ DB.php中的标记数不匹配
private function runQuery($sql, $bind_value = array()) {
$this->_error = false;
if($ms = $this->_query = $this->_pdo->prepare($sql)) {
$this->_query->bindValue($x, $bind_values);
if($this->_query->execute()) { //**ERROR FOUND HERE**
echo 'ok';
}
die();
}
}
public function get($column, $table, $where = array()) {
if($where) {
if(count($where) === 3) {
$operators = array(
'=',
'<',
'>',
'>=',
'<='
);
$field = $where[0];
$operator = $where[1];
$value = $where[2];
$bind_value = array(
$column,
$table,
$field,
$operator,
$value,
);
if(in_array($operator, $operators)) {
$sql = "SELECT ? ? WHERE ? ? ?";
return $this->runQuery($sql, $bind_value);
}
} else {
echo 'problem';
}
}
}
答案 0 :(得分:0)
你几乎违反了OOP的每一条规则。你班上不应该有像_query这样的变量。
你真正需要的只是这五行:
public function runQuery($sql, $bind_value = array()) {
$stmt = $this->_pdo->prepare($sql);
$stmt->execute($bind_value);
return $stmt;
}
必须返回语句,而不是将其设置为类变量。
get()函数也没用,错了,你最好避免它。如果你真的想要一个自动化选择查询的函数,你必须查看现有的查询构建器,比如AuraSQL。