2015-11-17 87 views
0

我正在學習使用MySQL的PHP​​ PDO,並想知道如何使用表1中的單行鏈接的一個更新查詢更新多個表。 示例如果我想更新表2中的值和/或3,其中一個查詢只知道表1記錄PK ID。我想也許我可以使用左連接,但不能正確。我不需要使用左連接,只需要最優化的編碼。PHP PDO更新MySQL多個表

不會導致任何更改的示例代碼。我相信它沒有正確鏈接。

**我希望從代碼:更新表2,3中的特定行中的值,例如通過只知道表1中具有表2,3的外鍵的PK。

$updt = $db->prepare("UPDATE t3 LEFT JOIN t1 ON t1.table3_fk = 
t3.table3_id SET t3.fooTable3=:VAR1, t3.barTable3=:VAR2 WHERE 
t1.table1_id = :VARID"); 
$updt->bindParam(':VAR1', $VAR1, PDO::PARAM_STR); 
$updt->bindParam(':VAR2', $VAR2, PDO::PARAM_STR); 
$updt->bindParam(':VARID', $VARID, PDO::PARAM_STR);  
$updt->execute(); 

表結構:

t1    t2    t3  
table1_id(PK) table2_id(PK) table3_id(PK) 
table2_fk  fooTable2  fooTable3 
table3_fk      barTable3 

例實錄:

t1  t2   t3 
22  10   14 
10  someabcdata somedefdata 
14     someefgdata 

任何幫助將是巨大的,謝謝。

編輯1:我確實嘗試發佈表格佈局的圖像,但不幸的是我沒有足夠的代表點根據這個網站。感謝您的鏈接。

EDIT2:解釋更詳細

EDIT3:爲了便於審覈

+1

你應該在你的問題中發佈你的表格的佈局,因爲我們更容易以這種方式訪問​​,而不是離開網站看到其他信息 - 這樣的東西可能會幫助你正確格式化http: //ozh.github.io/ascii-tables/ – James

+1

提供「不工作」的更多細節?你期望它做什麼?它做了什麼? –

+0

您的表格在您的代碼中與圖片中的名稱不同。如果't1'是一個短名稱,代碼將是'UPDATE table_long_name t1 ...'。 – AbcAeffchen

回答

0

你的代碼中包含一個錯字擺脫形象。在第一個語句中,您的變量名爲$updtt,但隨後的語句使用$updt

+0

謝謝,在我的實際代碼測試中,我沒有輸入錯誤。我糾正了。 – newpie