使用php将多行更新到mysql数据库中

时间:2011-11-13 13:07:45

标签: php mysql rows

我试图在这里更新多行。但是我没有指向该行的正确ID。

<?php
$table = 'DynamicPage';
$query = mysql_query(Query::SelectAllFrom($table));
// Count table rows 
$count = mysql_num_rows($query);
while ($row = mysql_fetch_array($query)) {
    $id[] = $row['ID'];
    echo '        
                    <h3>Column name: </h3><input type="text" name="name" maxlength="30" value="' . $row['Name'] . '" />

                    <h3>Tekst: </h3><textarea type="text" name="fulltext[]" maxlength="2000">' . $row['FullText'] . '</textarea>';
}
echo '<input name="Submit" type="submit" value="Submit" />
                      </form>';
// Check if button name "Submit" is active, do this 
if (isset($_POST['Submit'])) {
    for ($i = 0; $i < $count; $i++) {
        $queryUP = mysql_query("UPDATE $table SET Name='" . $_POST['name'] . "' WHERE id='??????????????'");
        $result  = mysql_query($queryUP);
    }
    if ($result) {
        header("location:index.php");
    }
}
?>

到目前为止,我可以从最后一个<h3>Column name: </h3><input type="text" name="name"...更新第一行(如果id ='1')我知道我没有以正确的方式传递ID,但我不得不考虑语法。如果有人有想法,请告诉我:) 谢谢

4 个答案:

答案 0 :(得分:0)

$_POST['Submit'] isset测试后尝试此操作:

for($i=0;$i<sizeof($id);$i++) {
    $queryUP = mysql_query("UPDATE $table SET Name='".$_POST['name']."' WHERE id = " . $id[$i]);
    $result = mysql_query($queryUP);
}

答案 1 :(得分:0)

input type="text" ids="id[]" maxlength="30" value="'.$row['id'].'"
//then submit part
for($i=0; $i<count($_POST['id'];$i++) {
$queryUP = mysql_query("UPDATE $table SET Name='".$_POST['name']."' WHERE id='$_POST['id'][$i]'");
$result = mysql_query($queryUP);
}

答案 2 :(得分:0)

你可以连接$ row ['ID']和$ row ['Name']来创建一个你以后可以解析的名字

<h3>Column name: </h3><input type="text" name="name" maxlength="30" 
     value="' . $row['ID']  . '_' . $row['Name'] . '" />

然后你可以使用类似的东西:

list($name, $id) = explode($_POST['name'], '_');

**还要注意,您在SQL语句中直接使用用户输入存在安全风险

答案 3 :(得分:0)

也许你应该添加一个带ID的隐藏输入字段:

HTML部分

<input type="hidden" name="id[]" value="'.$row['ID'].'" />
<h3>Column name: </h3><input type="text" name="name[]" maxlength="30" value="'.$row['Name'].'" />
<h3>Tekst: </h3><textarea name="fulltext[]" maxlength="2000">'.$row['FullText'].'</textarea>';

PHP

for($i=0; $i<count($_POST['ID']); ++$i){
//query goes here
}

SQL QUERY

UPDATE $table SET Name='{$_POST['name'][$i]}', Tekst='{$_POST['fulltext'][$i]}' WHERE id='{$_POST['id'][$i]}'

这是我的头脑,没有经过测试,但应该给你一个想法。 当然,要逃避所有输入字段。