[英]Error in MySQL syntax when i try to create database and set user privileges through PHP
這是我第一次在這個論壇上提問。
我正在一個php項目中,我必須通過php創建數據庫並插入一些空表。
這里的問題是,當我嘗試向超級用戶添加特權時,總是收到關於語法的錯誤消息(由於某些原因,如果我不這樣做,錯誤消息會指出我沒有訪問數據庫的權限)。
這是用於創建數據庫和分配權限的代碼:
$sql = "CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; ";
$sql .= "GRANT SELECT database.* TO 'superuser'@'localhost' ";
$sql .= "GRANT ALL ON database." TO 'superuser'@'localhost' IDENTIFIED BY 'password'; ";
$sql .= "FLUSH PRIVILEGES";
你能告訴我哪里錯了嗎? 提前致謝!
您需要以分號結束每個SQL語句;
,在第一次GRANT
之后丟失。 第二個GRANT
使用database."
並且應該是database.*
,也應該用反引號包圍,因為“ database”是保留字。也就是說,第一個GRANT
可以省略,因為它將包含在GRANT ALL
。
$sql = "CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; ";
$sql .= "GRANT ALL ON `database`.* TO 'superuser'@'localhost' IDENTIFIED BY 'password'; ";
$sql .= "FLUSH PRIVILEGES;";
您還可以使用HEREDOC格式使其更易於閱讀
$sql = <<<SQL
CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
GRANT ALL ON `database`.* TO 'superuser'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
SQL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.