PHP/MYSQL - 使用准备好的语句删除数据库
PHP/MYSQL - Drop database using prepared statement
我想使用 PDO 删除数据库。
这种方法对我来说是最好的
function delete_db($database)
{
$statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
$statement->bindParam(":database", $database);
$statement->execute();
}
但不幸的是,我收到一个 PDOException,说我的绑定值 ($database) 附近存在语法错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1'
所以我尝试按以下方式执行查询
function delete_db($database)
{
$statement = $my_pdo_obj->exec("DROP DATABASE IF EXISTS " . $database);
}
而且有效。
我想知道为什么准备好的语句不起作用,还有,如果第二个查询是安全的。
提前感谢您的想法!
据我所知,PDO 只接受列名的绑定。
也许这个问题对您有帮助!
Can PHP PDO Statements accept the table or column name as parameter?
您不能为 table 名称、数据库名称等使用绑定值
我想使用 PDO 删除数据库。
这种方法对我来说是最好的
function delete_db($database)
{
$statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
$statement->bindParam(":database", $database);
$statement->execute();
}
但不幸的是,我收到一个 PDOException,说我的绑定值 ($database) 附近存在语法错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1'
所以我尝试按以下方式执行查询
function delete_db($database)
{
$statement = $my_pdo_obj->exec("DROP DATABASE IF EXISTS " . $database);
}
而且有效。
我想知道为什么准备好的语句不起作用,还有,如果第二个查询是安全的。
提前感谢您的想法!
据我所知,PDO 只接受列名的绑定。
也许这个问题对您有帮助!
Can PHP PDO Statements accept the table or column name as parameter?
您不能为 table 名称、数据库名称等使用绑定值