2014-06-28 3 views
0

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

UPDATE `tbl_users` SET (SELECT `category` FROM `tbl_items` WHERE id = ?) = (SELECT `item` FROM `tbl_items` WHERE id = ?) WHERE id = ? 

, но это не возможно, я получаю эту ошибку в PHP: Фатальная ошибка: Вызов функции члена bind_param() на не-объект в

Я хочу, чтобы обновить столбец. tbl_users, имя столбца которого указано в tbl_items.

Заранее спасибо.

+0

Просто объясните, что вы хотите, используя этот запрос? – Sadikhasan

+0

обновил мой пост :) – Anwar

+0

Как таблица «Пользователь» и таблица «Категория» были связаны друг с другом – Sadikhasan

ответ

1

Я не уверен, понял ли я ваш вопрос, но мог ли вы сделать первый запрос, а затем использовать результаты этого запроса, чтобы сделать второй? так:

"SELECT `category`, `item` FROM `tbl_items` WHERE `id`=?" 

Затем использовать полученные результаты для (предполагая, что строка проходит в $row):

"UPDATE `tbl_users` SET `".$row['category']."` = '".$row['item']."' WHERE `id`=? 
+0

, вы это поняли :), но я уже знал, что это будет работать, но можно ли это сделать в 1 заявлении? – Anwar

+0

Насколько я могу судить, вы можете использовать подзапрос, чтобы установить значение, а не идентификацию столбца. Итак, 'column = (SUBQUERY)', но не '(SUBQUERY) = (SUBQUERY)' – Luke

+0

Спасибо! Я воспользуюсь вашей опцией – Anwar

0

вы можете использовать это в одном даного. вам не нужны два запроса и выборка и так далее.

UPDATE `tbl_users` 
    INNER JOIN `tbl_items` ON `tbl_users`.id = `tbl_items`.id 
    SET `tbl_items`.`category` = `tbl_items`.`item` 
    WHERE `tbl_users`.id = ? 
Смежные вопросы