Я хотел бы удалить базу данных, используя PDO.
Этот подход был лучшим для меня
function delete_db($database)
{
$statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
$statement->bindParam(":database", $database);
$statement->execute();
}
Но, к сожалению, я получил исключение PDOException, в котором говорится о синтаксической ошибке рядом с моим связанным значением ($ database):
Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ‘?’ в строке 1 ‘
Поэтому я попытался выполнить запрос следующим образом
function delete_db($database)
{
$statement = $my_pdo_obj->exec("DROP DATABASE IF EXISTS " . $database);
}
И это работает.
Мне было интересно, почему подготовленный оператор не работает, а также, если второй запрос был защищен.
Заранее спасибо за ваши идеи!
Вы не можете использовать значения привязки для имен таблиц, имен баз данных и т. Д.
Насколько я знаю, PDO принимает только привязки для имен столбцов.
Может быть, этот вопрос поможет вам!
Могут ли операторы PHP PDO принимать имя таблицы или столбца в качестве параметра?