2013-02-25 42 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