pdo — значения привязки PHP

У меня проблема с привязкой нескольких значений. Я экспериментировал с одним значением, и оно отлично работает. я что-то пропустил?

когда я запускаю запрос, он выдает мне ошибку:
Предупреждение: PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов в C: \ xampp \ htdocs \ Media \ admin \ dashboard \ classes \ DB.php в строке 35

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

Решение

Вы нарушили здесь почти все правила ООП. в вашем классе не должно быть таких переменных, как _query.

Что вам действительно нужно, это только эти пять строк:

public function runQuery($sql, $bind_value = array()) {
$stmt = $this->_pdo->prepare($sql);
$stmt->execute($bind_value);
return $stmt;
}

которые должны вернуть утверждение, а не устанавливать его как переменную класса.

Функция get () также бесполезна и неправильна, и вам лучше ее избегать. Если вы действительно хотите, чтобы функция автоматизировала запросы на выборку, вам нужно взглянуть на существующие конструкторы запросов, такие как AuraSQL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector