Я пытаюсь создать класс CRUD стиля ООП в PHP и используя подготовленные заявления PDO для защиты от инъекций. Мое соединение работает, и я могу выполнять обычные SQL-запросы из класса, но когда я пытаюсь включить функцию подготовки PDO, я получаю сообщение об ошибке, когда у меня либо есть синтаксическая ошибка MySQL, либо подготовка PDO не определена.Использование подготовленных инструкций PDO Ошибка MySQL
Ошибка попадает на линию $p_query = $db->prepare($sql)
. Может ли кто-нибудь определить, что я делаю неправильно?
<?php
require_once 'dbconfig.php';
class Crud {
protected $db;
private static function fetchQuery($sql, $values) {
echo $sql;
var_dump($values);
$db = Db_conn::pdoBuilder();
$p_query = $db->prepare($sql);
$p_query->execute($values);
$results = $p_query->fetch(PDO::FETCH_OBJ);
return $results;
}
public static function show($tbl, $id) {
$sql = '"SELECT * FROM (:tbl) WHERE id = (:id)"';
$values = [':tbl' => $tbl, ':id' => $id];
$results = self::fetchQuery($sql, $values);
return $results;
}
public static function listAll($tbl) {
$sql = '"SELECT * FROM (:tbl)"';
$values = [':tbl' => $tbl];
$results = self::fetchQuery($sql, $values);
return $results;
}
}
Покажите нам вывод '$ sql' и' $ values' –
. Вы пытались удалить двойные кавычки из запроса? Как насчет удаления скобок из имени таблицы и фильтров столбцов? –
@ MarcoAurélioDeleu sql: "SELECT * FROM (: tbl)" values: array (1) {[": tbl"] => string (6) "client"} –