Я пытаюсь использовать подготовленный оператор для установки значения-заполнителя с использованием свойства объекта класса, которое передается в качестве аргумента для __конструкция. Однако я шов получаю ошибку, указав необходимость в двух параметрах, когда у меня есть только один параметр для значения держателя места.PHP - PDO Подготовленный statment, «Предупреждение: PDOStatement :: bindParam() ожидает как минимум 2 параметра»
КОД:
<?php include ('connection.inc.php');
class Team {
// Remember to switch back to private!
private $database;
public $statement = 'SELECT * FROM members ORDER BY :full_name';
public $order;
public $query;
private $result;
public function __construct($database, $order) {
$this->database = $database;
$this->order = $order;
$this->query = $this->database->prepare($this->statement);
$this->query->bindParam(array('full_name', $this->order));
$this->query->execute();
}
public function getMember() {
$this->result = $this->query->fetch(PDO::FETCH_ASSOC);
return $this->result;
}
public function id() {
echo $this->result['id'];
}
public function fullName() {
echo $this->result['full_name'];
}
public function alias() {
echo $this->result['alias'];
}
public function abilities() {
echo $this->result['abilities'];
}
};
$test = new Team($database, 'full_name');
?>
ОШИБКИ:
Внимание: PDOStatement :: bindParam() ожидает, по меньшей мере, 2, 1 Параметры, приведенные в
Фатальная ошибка: Исключить исключение «PDOException» с сообщением «SQLSTATE [HY093]: Недопустимый номер параметра: нет параметра ERS были связаны»
Решение
Благодаря @Daerik, я изменил мои bindParam()
заявления:
$this->query->bindParam(':full_name', $this->order));
Это снимало ошибки.
Спасибо, что удалены обе ошибки и. Однако при повторении запроса sql с использованием метода 'gettMember()' он швы игнорирует мой оператор 'ORDER BY ': full_name'' и использует столбец' id' для сортировки записей. Это ошибка в моем подготовленном заявлении? –
@ FrederickM.Rogers Вы хотите использовать столбец в инструкции 'ORDER BY'. Присвоение строки будет сравнивать их все с одним и тем же значением и по умолчанию индексом. Подробнее см. Http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html. – Daerik
спасибо, что прочитаете его и внесите необходимые корректировки! –