我想使用@var
来存储表格前缀,如:
SET @prefix = 'wp_';
在我的查询中创建表名wp_users
(wp_
加users
)和wp_usermeta
:
SET @username = 'username';
SET @password = 'P@55W0rd';
SET @email = 'em@il.com';
INSERT INTO `wp_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`)
VALUES
(NULL , @username, MD5(@password), '', @email, '', NOW(), '', '0', '');
INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`)
VALUES
(NULL, LAST_INSERT_ID(), 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}'),
(NULL, LAST_INSERT_ID(), 'wp_user_level', '10');
我怎样才能做到这一点?我无法找到任何使用@var
作为表名的一部分的示例。
答案 0 :(得分:0)
*根据this,无法完成:
只有在允许表达式的情况下才能使用SQL变量 必须提供常量或文字标识符的位置。虽然是的 试图将变量用于诸如表名之类的东西 它不起作用。
最后修改于2009年12月5日星期六14:35
FWIW - 我使用变量作为表名进行了测试:
SET @userstable = 'wp_users';
INSERT INTO `@userstable` [...]
INSERT INTO @userstable [...]
分别得到以下错误:
1146 - 表'[dbname]。@ userstable'不存在
1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在'@userstable
附近使用正确的语法
...为了使事情变得复杂 - 我只是用mysql找到了this post relating to stored procedures。但INSERT上的语法相同。
唉 - 当通过phpMyAdmin将用户添加到WordPress数据库时,我只需要手动编辑所有表格前缀。
答案 1 :(得分:-2)
我会批评你只是因为我问谷歌“mysql变量语法”并得到了正确的页面, https://dev.mysql.com/doc/refman/5.0/en/user-variables.html:
您可以在一个语句中将值存储在用户定义的变量中 然后在另一个声明中引用它。这使您可以通过 从一个陈述到另一个陈述的价值。
用户变量写为@var_name,其中包含变量名称 var_name由字母数字字符“。”,“_”和“$”组成。一个 用户变量名称可以包含其他字符,如果您将其引用为 字符串或标识符(例如,@'my-var',@“my-var”,或 @
my-var
)。