2014-06-28 95 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

您可以在一個statment使用。你不需要兩個查詢和獲取等。

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 = ?