簡體   English   中英

當我嘗試通過PHP創建數據庫並設置用戶權限時,MySQL語法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM