2013-01-15 40 views
0

有什麼辦法可以在一個查詢中更新兩個表?以下是我的代碼示例。我怎樣才能把這兩個更新查詢放在一起?先謝謝你!如何更新一個查詢中的兩個表?

<?php 
// DATABASE UPDATE 
    if (isset($_POST['submit']) or isset($_GET['submit'])){ 

// 1st QUERY 
    $db =& JFactory::getDBO(); 
    $query_1 = "UPDATE table_1 
        SET name  = '".$_POST["name"]."', 
         surename = '".$_POST["surename"]."' 
       WHERE id=1"; 
    $db->setQuery($query_1); 
    $db->query(); 

// 2nd QUERY 
    $db =& JFactory::getDBO(); 
    $query_2 = "UPDATE table_2 
        SET team_id = '".$_POST["team_id"]."', 
        SET team_name = '".$_POST["team_name"]."' 
        "; 
    $db->setQuery($query_2); 
    $db->query(); } ?> 
+0

嚴重的是,請**停止**無論你在做什麼,並閱讀[適當的SQL轉義](http://bobby-tables.com/php)。你在這裏做的事情是有害的,事業有害。 – tadman

+3

第二個查詢中的WHERE條件在哪裏。它現在寫入將更新該表中的所有記錄。 –

+4

這不是學術問題。看看[自動黑客工具](http://sqlmap.org/)可以對您的網站做些什麼。請認真對待**。如果你在公共互聯網上有這個,整個網站被毀壞只是時間問題。我沒有聲稱知道所有事情,但我確實知道沒有正確轉義數據的風險。 – tadman

回答

5

MySQL實際上允許在單個查詢中更新多個表(儘管您的應用程序一次只能執行一次)。

UPDATE table_1, table_2 
SET table_1.field = <some value>, table_2.field = <some value> 
WHERE table_1.field2 = table_2.field_2 
AND table_1.field_3 = <some other value> 

參見:http://dev.mysql.com/doc/refman/5.1/en/update.html

正如其他人所指出的,你應該看看使用預處理語句。

+0

我對這個東西真的很新,很抱歉!!!那些準備好的陳述究竟是什麼?謝謝您的回答!!! – DNA180

+0

我不確定你使用的是哪個庫,但是對於PDO,PHP文檔相當不錯:http://php.net/manual/en/pdo.prepare.php。基本上它們有助於防止在數據庫應用程序中執行惡意查詢。 – dethtron5000

+0

這是JDatabase! – DNA180

1

使用事務,只有InnoDB引擎支持它。

mysql>啓動事務; 查詢OK,0行的影響(0.00秒)

{第一插入這裏}

{第二插入這裏}

的MySQL>提交; 查詢OK,0行受影響(0.00秒)

請注意,您必須編寫提交,因爲如果您不這樣做,它不會將其刷新到數據庫。

相關問題