所以,我有一个包含大量工作人员的页面。每个工作订单都是单个表中的一行,并使用while()语句放在页面上。 我正在尝试使用我放在while()中的简单表单更新每一行,并使用UPDATE / WHERE语句将信息实际添加到表中。
不是将其添加到特定行,而是将其添加到每一行。我唯一能想到的是我的WHERE条件是错误的,但我似乎无法弄明白。也许它只需要新鲜的眼睛,或者我正朝着完全错误的方向前进。
此外,任何有关安全性的具体说明,更好的方法等等都会非常有用。我正在学习PHP,可以帮忙。 :)
<?php
$query = "SELECT * FROM client_information";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$which_ad = $row['ID'];?>
<b>Name:</b> <? echo $row['billing_name']; ?> <br>
<b>Job Type:</b> <? echo $row['job_type']; ?> <br>
<b>Size:</b> <? echo $row['size']; ?> <br>
<b>Text:</b> <? echo $row['text']; ?> <br>
<b>Notes:</b> <? echo $notes; ?> <br>
<br><br>
<form action="small_update.php" method="POST">
<strong>Email Message:</strong><br>
<textarea rows="8" cols="60" name="email_message"></textarea>
<input type="submit" name="submit" value="Submit"></form>
<?
$email_message = htmlspecialchars ("{$_POST['email_message']}", ENT_QUOTES);
if (mysql_errno() != 0) {
die(mysql_error());
}
mysql_query(
"UPDATE client_information
SET email_message='$email_message'
WHERE ID='$which_ad'"
);
if (mysql_errno() != 0) {
die(mysql_error());
}
}
?>
答案 0 :(得分:0)
您没有在表单中指定ID:
<form action="small_update.php" method="POST">
<strong>Email Message:</strong><br>
<textarea rows="8" cols="60" name="email_message"></textarea>
<input type="hidden" name="id" value="<?php echo $which_ad; ?>">
<input type="submit" name="submit" value="Submit">
</form>
您还需要确保知道提交了哪个ID:
"UPDATE client_information
SET email_message='$email_message'
WHERE ID='$_POST['id']'"
当然,正如其他人所说的那样,你对此类攻击持开放态度。您需要查看mysqli或pdo来清理您的输入...
Ans也在检查时你正在评估循环中的帖子数据。不要那样做。只需在页面上处理完所有其他内容之前进行评估......
<?php
if($_POST)
{
//run processing here
}
// do your fetch code here and display the forms...