2015-07-10 2 views
1

Я хотел бы использовать @var для хранения таблицы префикс, как:Синтаксис для использования @var для таблицы префикса в запросе MySQL

SET @prefix = 'wp_'; 

Для создания таблицы имен wp_users (wp_ плюс users) и wp_usermeta в мой запрос ниже:

SET @username = 'username'; 
SET @password = '[email protected]'; 
SET @email = '[email protected]'; 

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

и ваша проблема ...? –

+0

Это название, но не вопрос. Я попытаюсь отредактировать его. –

ответ

0

* По this это не может быть сделано:

переменные SQL могут быть использованы только тогда, когда выражения допускаются, не , где должны быть предусмотрены постоянные или буквенные идентификаторы. Хотя соблазн попытаться использовать переменные для таких вещей, как имена таблиц, не работает.

Последнее изменение в субботу, 5 декабря 2009 14:35

  • BTW поиск по «переменных могут быть использованы только тогда, когда выражения допускаются» оказывается много копий одного и того же содержания - Хотя кажется, что этот вопрос не подходит для определения происхождения.

FWIW - Я сделал тест, используя переменную в качестве имени таблицы:

SET @userstable = 'wp_users'; 

    INSERT INTO `@userstable` [...] 
    INSERT INTO @userstable [...] 

И получил следующие ошибки соответственно:

1146 - Таблица. [Имя_бд] @ userstable ' не существует

1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для корректного синтаксиса использовать вблизи «@userstable

... И усложнять - я просто найти this post relating to stored procedures с MySQL. Но тот же синтаксис не работает на INSERT.

И так увы - при добавлении пользователей в БД WordPress через phpMyAdmin мне просто нужно будет вручную редактировать все префиксы таблиц.

-2

я критиковать вас просто потому, что я попросил Google для «переменного синтаксиса тузд» и получил нужную страницу, https://dev.mysql.com/doc/refman/5.0/en/user-variables.html:

Вы можете сохранить значение в определенном пользователе переменного в одном операторе и , затем обратитесь к нему позже в другом заявлении. Это позволяет передавать значения из одного заявления в другое.

Пользовательские переменные записываются как @var_name, где имя переменной var_name состоит из буквенно-цифровых символов «.», «_» И «$». A имя переменной пользователя может содержать другие символы, если вы указываете его как строку или идентификатор (например, @ 'my-var', @ "my-var" или @my-var).

+1

Эта цитата не имеет ничего общего с конкатенацией переменных с другими строками для формирования имен таблиц. –

+0

Спасибо, Маркус, я уже был на этой странице. Вот почему я пришел сюда. В приведенном выше вопросе используется базовая форма, которую вы так любезно предоставили. – dwcouch

Смежные вопросы