2013-02-25 45 views
0

我有一個照片庫,並希望通過表單輸入一次更新多個標題。我試圖研究這一點,但我認爲我在頭腦中。這是我迄今爲止,但它不工作..如何使用foreach循環更新SQL數據庫?

數據保存在一個名爲「畫廊」的SQL表中。一個例子行可能看起來像:

gallery_id(key) = some number 
product_id  = 500 
photo   = photo.jpg 
caption   = 'look at this picture' 

我的表單輸入都是這樣產生的:

$ SQL =請求mysql_query( 「SELECT * FROM畫廊,的product_id = 500」);

while($row = mysql_fetch_array($sql)) { 
    $photo=$row['photo']; 
    $caption=$row['caption']; 
    echo '<img src="$photo"/>'; 
    echo '<input name="cap['.$caption.']" id="cap['.$caption.']" value="'.$caption.'" />'; 
    } 

所以一旦我提出我開始像這樣訪問我輸入的形式,但我撞牆..

if(isset($_POST['cap']) && is_array($_POST['cap'])) { 
     foreach($_POST['cap'] as $cap) { 
     mysql_query("UPDATE gallery 
        SET caption=$caption 
        WHERE ???????"); 
     } 

    } 

我不知道怎麼跟數據庫放在哪裏這些輸入和據我所知,不能在foreach循環中傳遞多個變量。

+2

你neeed通過原標題的id,太。所以你的陳述將沿着'UPDATE gallery SET caption = $ caption WHERE gallery_id = $ gallery_id'(我希望你正在顯示縮寫代碼,否則你打開自己的SQL注入)。 – 2013-02-25 02:16:13

+1

請注意,您不應該再使用'mysql_ *'函數。整個範圍是[棄用](http://www.php.net/manual/en/function.mysql-query.php)。它在幾年內沒有更新或維護,只是爲了向後兼容而存在。你應該使用'mysqli_ *'或'PDO'方法。 – 2013-02-25 02:22:22

回答

0

$ _ POST是一個數組,如果我不是錯了(我現在不能測試,並即時在PHP中新)你可以做

foreach ($_POST as $p) { 
    $id=$p['id'];' 
    $cap=$p['caption']; 
mysql_query("UPDATE gallery 
       SET caption=$cap 
       WHERE photoid=$id"); 

} 
+0

謝謝!我甚至沒有考慮過數組。我會更多地研究它們 – 2013-02-25 07:10:32