mysql - 如何用MySQL准备语句写 "create user ?"

标签 mysql prepared-statement prepare

我试过:

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 ?';

两年多前已经问过非常相似的问题,但仍然没有有用的答案:( Create User with MySQLi Prepared Statement

最佳答案

这是我设法创建用户的唯一方法,不幸的是它没有为用户变量使用占位符:

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;

附言{创建 |重命名 |从 MySQL 5.1.12 开始应该支持 DROP} USER 语句

关于mysql - 如何用MySQL准备语句写 "create user ?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647115/

相关文章:

mysql - 在存储过程中循环准备语句查询的结果

mysql - wpdb->使用prepare()插入自定义wp表

mysql - 两个不同值的总和列计数

php - 检查两个日期不在两个另一个日期之间 + MYSQl

java - Hibernate文档矛盾: SQL Normalization vs Entity Mapping on Multiple Tables

java - 使用 JDBC 准备语句的 SQL 1064 语法错误

mysql - 连接表中的多行和字段

php - 插入查询有时不起作用

PHP PDO 准备和执行语句

php - PDO 准备和执行查询总是返回错误