我的页面上有两个来自。用一个我在第一个sql表中更新或编辑数据。第二个我可以广告并删除第二个sql表中的数据。对“ID”值采取某些行动。
这是我的表格:
<form class="form_hidden" name="form1" style="left:10px;top:10px;" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input class="final_form input_id" name="input_id"/>
<input class="final_form input_date" name="input_date" />
<input class="final_form input_poczatkowy" name="input_poczatkowy" />
<input class="final_form input_gotowka" name="input_gotowka" />
<input class="final_form input_karta" name="input_karta" />
<input class="final_form input_pobrano" name="input_pobrano" />
<input class="final_form input_kto" name="input_kto" />
<button class="hidden_button button_1" type="submit" name="form1submit">btn</button>
</form>
<form class="form_hidden" name="form2" style="left:10px;top:300px;" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input class="final_form wydatek_id" name="wydatek_id"/>
<input class="final_form wydatek_date" name="wydatek_date" />
<input class="final_form wydatek_kwota" name="wydatek_kwota" />
<input class="final_form wydatek_rodzaj" name="wydatek_rodzaj" />
<input class="final_form wydatek_opis" name="wydatek_opis" />
<button class="hidden_button button_1" type="submit" name="form2submit">btn</button>
</form>
这是我的PHP代码:
$db_name = 'DATABASE_NAME';
$db_host = 'localhost';
$db_user = 'DATABASE_USER';
$db_pass = 'PASSWORD';
$conn = mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_name);
mysql_query("SET CHARSET utf8");
mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`");
if(isset($_POST['form1submit']))
{
$raport_id = $_POST['input_id'];
$raport_date = $_POST['input_date'];
$raport_poczatkowy = $_POST['input_poczatkowy'];
$raport_gotowka = $_POST['input_gotowka'];
$raport_karta = $_POST['input_karta'];
$raport_pobrano = $_POST['input_pobrano'];
$raport_kto = $_POST['input_kto'];
if($raport_id=='null'){
$sql = "INSERT INTO `raporty`(`id`, `data`, `stan_poczatkowy`, `platnosci_gotowka`, `platnosci_karta`, `pobrano`,`kto_pobral`, `komentarz`)
VALUES('".NULL."','".$raport_date."','".$raport_poczatkowy."','".$raport_gotowka."','".$raport_karta."','".$raport_pobrano."','".$raport_kto."','".NULL."')";
}else{
$sql = "UPDATE `raporty` SET
`data`='".$raport_date."',
`stan_poczatkowy`='".$raport_poczatkowy."',
`platnosci_gotowka`='".$raport_karta."',
`platnosci_karta`='".$raport_gotowka."',
`pobrano`='".$raport_pobrano."',
`kto_pobral`='".$raport_kto."',
`komentarz`='".NULL."'
WHERE `raporty`.`id`='".$raport_id."'";
}
$retval = mysql_query($conn,$sql);
header("Location: http:page");
exit;
}
if(isset($_POST['form2submit']))
{
$wydatek_id = $_POST['wydatek_id'];
$wydatek_date = $_POST['wydatek_date'];
$wydatek_kwota = $_POST['wydatek_kwota'];
$wydatek_rodzaj = $_POST['wydatek_rodzaj'];
$wydatek_opis = $_POST['wydatek_opis'];
if($wydatek_id=='null'){
$sql = "INSERT INTO `wydatki` (`id` ,`data` ,rodzaj` ,`kwota` ,`kategoria` ,`opis`) VALUES ('".NULL."','".$wydatek_date."','wydatek','".$wydatek_kwota."','".$wydatek_rodzaj."','".$wydatek_opis."')";
}else{
$sql = "DELETE FROM `wydatki` WHERE `wydatki`.`id` = '".$wydatek_id."'";
}
$retval = mysql_query( $sql, $conn );
header("Location: http:page");
exit;
}
有趣的事实是,只有工作的是对于wydatki表的DELETE FROM查询。其余的只是不工作,我不知道为什么。并且,他们在我添加第二种形式之前就已经工作了。
感谢您的帮助。
答案 0 :(得分:1)
在第一次调用mysql_query()
时,您的参数会倒退。
mysql_query($conn,$sql);
应该是:
mysql_query($sql,$conn);
话虽如此,mysql_*
系列函数已被弃用,不应在新代码中使用。相反,他们已使用预先准备好的陈述替换为mysqli_*
和PDO
。
值得注意的是,您的表单完全容易受到lack of any escaping of your database inputs的MySQL注入攻击。这就是为什么准备语句存在于mysqli和PDO中以及为什么要使用它们的确切原因。现在,任何人都可以通过表单运行自己的SQL代码来擦除整个数据库。