0

所以,我有一个页面,上面有一堆工单。每个工作订单是单个表中的一行,并通过 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());
}

    }

?>
4

1 回答 1

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...
于 2012-11-06T01:39:08.317 回答