3

私は試した:

SET @user = 'foo@localhost';
SET @pass = 'bar';
SET @sql = 'CREATE USER ? IDENTIFIED BY ?';
PREPARE stmt FROM $sql;

エラーが発生します

ERROR 1064 (42000): 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 '? IDENTIFIED BY ?'

また、変数を定義する方法を複数試してみましたが、それでもうまくいきませんでした。

SET @user = "'foo'@'localhost'";
SET @sql = 'CREATE USER ? IDENTIFIED BY ?';

そしてさえ

SET @user = 'foo';
SET @host = 'localhost';
SET @sql = 'CREATE USER ?@? IDENTIFIED BY ?';

よく似た質問が2年以上前にすでに尋ねられましたが、まだ有用な答えはありません:( MySQLiプリペアドステートメントでユーザーを作成する

4

1 に答える 1

5

これがユーザーを作成する唯一の方法です。残念ながら、ユーザー変数にプレースホルダーを使用していません。

SET @user := 'foo';
SET @host := 'localhost';
SET @pass := 'bar';
SET @sql := CONCAT("CREATE USER ", QUOTE(@user), "@", QUOTE(@host), " IDENTIFIED BY ", QUOTE(@pass));
PREPARE stmt FROM @sql;
EXECUTE stmt;

PS{CREATE | RENAME | DROP} USERステートメントは、MySQL 5.1.12 以降でサポートされる必要があります。

于 2013-12-18T00:58:30.843 に答える