通过PHP更新数据的麻烦

时间:2011-11-27 13:49:33

标签: php mysql

我对此代码有疑问,它会删除一行但不会编辑一行。我无法弄清楚如何让它发挥作用。 这是脚本:

<?php
if($_POST['delete']){

    $i = 0;
    while(list($key, $val) = each($_POST['checkbox'])) {
        $sql = "DELETE FROM $tbl_name WHERE id='$val'";
        mysql_query($sql);
        $i += mysql_affected_rows();
    }

    // if successful redirect to delete_multiple.php
    if($i > 0){
        echo '<meta http-equiv="refresh" content="0;URL=data.php">';
    }
}

if($Submit){
    for($i=0;$i<$count;$i++){
        $sql="UPDATE $tbl_name SET naam='$naam[$i]', achternaam='$achternaam[$i]', leeftijd='$leeftijd[$i]', straat='$straat[$i]', postcode='$postcode[$i]', telefoon='$telefoon[$i]', email='$email[$i]', geslacht='$geslacht[$i]', pakket='$pakket[$i]', WHERE id='$id[$i]'";
        $result1=mysql_query($sql1);
    }
}

mysql_close(); 
?>

3 个答案:

答案 0 :(得分:1)

正如其他人已经指出$ Submit未在if语句之前定义 - 也没有定义$ tbl_name,因此如果if语句被触发,它将带来错误。< / p>

同样在$ result1中你使用了$ sql1 - $ sql1尚未定义。

你像Pekka所说的那样容易受到SQL injections的攻击,所以我建议你继续阅读,总是,总是验证用户输入的数据,永远不要相信任何人:)

此外,您无需打印元刷新,只需使用header

即可
header ("Location: data.php");

答案 1 :(得分:0)

$Submit在使用之前未定义。因此,其值为null,即falsy值。因此if循环永远不会被执行。

答案 2 :(得分:0)

$Submit未定义(正如其他人已经提到的那样)。此外,如果您确定$Submit,那么$count仍未定义。所以你仍然没有进入for循环。如果定义了$count,您的代码仍然不会更新数据库。您将sql查询存储在$sql中,但将尚未设置的$sql1作为应执行的查询传递。

你的代码是开放sql注入的。你should not想要那个。