2011-12-15 22 views
0

我有一個php代碼,它彙總了同一個數據庫的兩個不同表中的同一列的值,並將其存儲在一個變量中。代碼如下提到:如何使用具有動態值的變量更新sql表格

$sql = 'SELECT 
     (SELECT SUM(time_spent) 
     FROM '.TICKET_RESPONSE_TABLE.' 
     WHERE ticket_id='.db_input($id).') 
     +(SELECT SUM(time_spent) 
      FROM '.TICKET_NOTE_TABLE.' 
      WHERE ticket_id='.db_input($id).') 
    AS total_time'; 
$result = db_query($sql); 
$cursor = mysql_fetch_row($result); 
$total_time = $cursor[0]; 

現在,我要的是在同一個數據庫的另一個表更新一列,與存儲在變量$ TOTAL_TIME值。請幫助我一樣。

回答

0

你可以讓子查詢:

UPDATE table1 t1 
SET t1.val1 = 
(SELECT val FROM table2 t2 WHERE t2.id = t1.t2_id) 
WHERE t1.val1 = ''; 
0

爲什麼不 $ SQL = 「插入到其他表中設置FIELD_NAME = $ TOTAL_TIME」; $ result = db_query($ sql);

2

你可以做一個直接更新,而不是有一個變量。

$sql = 'UPDATE *tablename* 
     SET *columname* = 
     (SELECT SUM(time_spent) 
     FROM '.TICKET_RESPONSE_TABLE.' 
     WHERE ticket_id='.db_input($id).') 
     +(SELECT SUM(time_spent) 
      FROM '.TICKET_NOTE_TABLE.' 
      WHERE ticket_id='.db_input($id).')'; 
$result = db_query($sql); 

或後記這樣的:

$sql = 'SELECT 
     (SELECT SUM(time_spent) 
     FROM '.TICKET_RESPONSE_TABLE.' 
     WHERE ticket_id='.db_input($id).') 
     +(SELECT SUM(time_spent) 
      FROM '.TICKET_NOTE_TABLE.' 
      WHERE ticket_id='.db_input($id).') 
    AS total_time'; 
$result = db_query($sql); 
$cursor = mysql_fetch_row($result); 
$total_time = $cursor[0]; 
$sql = 'SUPDATE *tablename* 
      SET *columname* = ' . $total_time 
$result = db_query($sql); 
+0

+1的第一個只(更新+在一個查詢中選擇),我在這裏看不到需要的價值回報給PHP和更新另一個查詢。 –