2014-08-30 80 views
0

我試圖使用Zend框架更新類:http://framework.zend.com/manual/2.2/en/modules/zend.db.sql.html#zend-db-sql-update更新多個表

創建類似的說法在這裏找到:
http://dev.mysql.com/doc/refman/5.0/en/update.html

UPDATE items,month SET items.price=month.price WHERE items.id=month.id; 

我試着將數組傳遞給 - >表,但它在字符串轉換上失敗。

// UPDATE `Array` 
$update->table(['table1', 'table2']) 

我已經嘗試創建一個轉義字符串,但它最終轉換爲SQL時雙轉義。

// UPDATE ``table1`,`table2`` 
$update->table("`table1`,`table2`") 

我試圖欺騙和使用破滅使用膠水錶一起

// UPDATE `table1``,``table2` 
$update->table(implode("`,`", ['table1','table2'])) 

有誰有一個乾淨的解決這個問題的?

回答

0

經過進一步的研究,我認爲不能這樣做。我之所以這麼說是因爲你提出的查詢可能太耗費資源。在尋找替代選項後,我遇到Update one MySQL table with values from another。但是,我知道,Update對象上沒有加入選項。所以至少在這個階段,我不相信這是可以做到的。

+0

還在等待答案! – 2014-09-01 15:08:35

+0

我試着手動運行我的查詢並將輔助表離開並在WHERE和SET語句中使用它。我從服務器回來了一個錯誤。 – metric152 2014-09-02 18:43:40

+0

我更新了我的sql語句以使用您發佈的答案中的格式。無賴,我發現我暫時不能使用zend類。謝謝您的幫助。 – metric152 2014-09-07 17:50:33

0

您是否正在嘗試寫下如下所示的sql:「update tableOnetableTwo set ....」!我不認爲這是可能的SQL。由於mySql不支持這種syntex,所以zend也是如此。這裏是zend表方法 -

public function table($table) 
@param string|TableIdentifier $table 

參數只是字符串或TableIdentifier。所以你必須在zend寫兩個sql

$update->table('table1'); 
$update->set(array('foo' => 'bar', 'baz' => 'bax')); 
....... 
........ 
$update->table('table2'); 
$update->set(array('foo1' => 'bar', 'baz1' => 'bax')); 

希望它能幫助你。

+0

問題頂部的鏈接示例顯示了mysql文檔中的相同sql語句。查詢確實有效,但我試圖使用Update類。我目前正在使用數據庫 - >查詢手動編寫它。 我嘗試瞭解代碼並看到了你正在談論的功能。它只接受一張桌子。我希望能有辦法解決這個問題。 – metric152 2014-09-01 03:57:17