无法使用表单编辑mysql行

时间:2012-07-29 14:53:57

标签: php mysql forms

我正在尝试创建一个可以编辑db表中行的表单。 (基于我从StackOverflow页面获得的一些代码。)

我能够使用相关数据填充表单,但是当我提交表单时,行不会更新。实际上,我的一些列已被删除。

我做错了什么?

edit.php

<?php

$UID = (int)$_GET['f'];
$query = mysql_query("SELECT * FROM user_feeds WHERE feed_id = '$UID'") or die(mysql_error());

if(mysql_num_rows($query)>=1){
    while($row = mysql_fetch_array($query)) {
        $feedtitle = $row['feed_title'];
        $feedurl = $row['feed_url'];
        $feedorder = $row['feed_order'];
        $feedowner = $row['feed_owner'];
    }
?>
<form action="update.php" method="post">
<input type="hidden" name="ID" value="<?=$UID;?>">
Title:<br /> <input type="text" name="ud_feedtitle" value="<?=$feedtitle?>"><br>
URL: <br /> <input type="text" name="ud_feedurl" value="<?=$feedurl?>"><br>
Order: <br /> <input type="text" name="ud_feedorder" value="<?=$feedorder?>"><br>
Owner:<br /> <input type="text" name="ud_feedowner" value="<?=$feedowner;?>"><br>
<input type="Submit">
</form>
<?php
}else{
    echo 'No entry found. <a href="javascript:history.back()">Go back</a>';
}
?>
</div>
</body>
</html>

update.php

    <?php



$ud_ID = $_REQUEST["ID"];
$ud_feedtitle = $_POST["feed_title"];
$ud_feedurl = $_POST["feed_url"];
$ud_feedorder = $_POST["feed_order"];
$ud_feedowner = $_POST["feed_owner"];


$query = "UPDATE user_feeds SET feed_title = '$ud_feedtitle', feed_url = '$ud_feedurl', feed_order = '$ud_feedorder', feed_owner = '$ud_feedowner', WHERE feed_id = '$ud_ID'";


$res = mysql_query($query);

if ($res)
  echo "<p>Record Updated<p>";

else
  echo "Problem updating record. MySQL Error: " . mysql_error();

?>

1 个答案:

答案 0 :(得分:2)

<强>原因:

输入字段的名称与填充 $ _ POST 的名称相同。您当前请求的变量:

$_POST["feed_title"];, $_POST["feed_url"];,  $_POST["feed_order"];, $_POST["feed_owner"];

都是空的,因为它们不存在。更新时,您将使用空值替换表中的值。


<强>解决方案:

在您的update.php,中,应该有以下内容。

$ud_ID = $_POST["ID"];
$ud_feedtitle = $_POST["ud_feedtitle"]; //corresponding to <input type="text" name="ud_feedtitle" ...
$ud_feedurl = $_POST["ud_feedurl"]; //corresponding to <input type="text" name="ud_feedurl" ...
$ud_feedorder = $_POST["ud_feedorder"]; //corresponding to <input type="text" name="ud_feedorder" ...
$ud_feedowner = $_POST["ud_feedowner"]; //corresponding to <input type="text" name="ud_feedowner" ...