在WHILE语句中更新

时间:2012-11-06 01:26:20

标签: php sql sql-update

所以,我有一个包含大量工作人员的页面。每个工作订单都是单个表中的一行,并使用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());
}

    }

?>

1 个答案:

答案 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...