Я все еще продолжаю изучать PDO полностью, но я был немного удивлен, когда проверил сегодня вечером, работает ли он для SQL Inject, и к моему удивлению, это сработало. Итак, я начал думать; объявленные значения должны автоматически очищаться с использованием подготовленных PDO операторов, что означает, что в моем запросе SQL должно быть что-то не так, я прав?
У меня есть страница, для которой нужна переменная GET, чтобы собрать соответствующие данные из моей базы данных с этим идентификатором. Я создал функцию, которая включает в себя подготовку запроса, а также его выполнение для упрощения процесса кодирования. Код, который я сейчас написал, выглядит так:
$request = $_GET['movie'];
$sql = "SELECT * FROM `movies` WHERE `url` = '$request'";
$db = new database;
$db->setDBC();
$process = $db->executeQuery($sql);
$cmd = $process->fetch(PDO::FETCH_NUM);
$title = $cmd[1];
И исключение PDO, которое я получаю:
Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '21 -31282 'в строке 1 в C: \ xampp \ htdocs \ filmvote \ include \ databaseClass.php: 33 Трассировка стека: # 0 C: \ xampp \ htdocs \ filmvote \ include \ databaseClass.php (33): PDOStatement-> execute () # 1 C: \ xampp \ htdocs \ filmvote \ recension.php (9): databaseManagement-> executeQuery ('SELECT) * FROM `... ') # 2 {main}, брошенный в C: \ xampp \ htdocs \ filmvote \ include \ databaseClass.php в строке 33
Вы получаете такую ошибку при добавлении ' or 1-1
к URL. Что я могу сделать по этому поводу? Очень благодарен за помощь.