我对此代码有疑问,它会删除一行但不会编辑一行。我无法弄清楚如何让它发挥作用。 这是脚本:
<?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();
?>
答案 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想要那个。