在MySQL查询中使用@var作为表前缀的语法

时间:2015-07-10 21:46:26

标签: mysql prefix

我想使用@var来存储表格前缀,如:

SET @prefix = 'wp_';

在我的查询中创建表名wp_userswp_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作为表名的一部分的示例。

2 个答案:

答案 0 :(得分:0)

*根据this,无法完成:

  

只有在允许表达式的情况下才能使用SQL变量   必须提供常量或文字标识符的位置。虽然是的   试图将变量用于诸如表名之类的东西   它不起作用。

     

最后修改于2009年12月5日星期六14:35

  • BTW搜索“变量只能在允许表达式的情况下使用”会转换相同内容的大量副本 - 虽然看起来超出了本问题的范围来识别原点。 / LI>

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)。