【发布时间】:2015-04-21 10:49:29
【问题描述】:
我正在尝试从 MySQL 服务器中删除用户:
$conn = new PDO("mysql:host=$host;port=$port;dbname=mysql;charset=utf8","$adminname", "$pass",array( PDO::ATTR_PERSISTENT => true));
$sql_deleteuser="DELETE FROM `mysql`.`user` WHERE `user`.`User` = '$username'";
//$sql_deleteuser="SELECT `User` FROM `mysql`.`user`";
$PDOStatement3=$conn->prepare($sql_deleteuser);
//$PDOStatement3->bindParam(':username', $username, PDO::PARAM_STR);
$res_exec=$PDOStatement3->execute();
但它不起作用,errorInfo() 没有错误,我试过了
$sql_deleteuser="DROP USER '$username'@'%'";
和
$sql_deleteuser="IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'$username') DROP USER [$username]"; 相同的结果。
连接很好,我使用SELECT 查询对其进行了测试,它可以正常工作。
我是不是错过了什么。任何帮助将不胜感激。
【问题讨论】:
-
您需要权限才能删除用户
-
是的,我已经使用管理员帐户建立了连接
-
您可以通过将PDO错误模式设置为异常来检查错误 $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);顺便说一下 $conn->exec($sql_deleteuser);应该也行,不用准备!
-
sys.database_principal这是 sql server 更改你的标签 -
事实上这是一个特权问题,因为我得到了
Syntax error or access violation,但我有ALL PRIVILEGES管理员作为SuperUser localhost global ALL PRIVILEGES Yesuser表。
标签: php mysql sql-delete