2012-07-29 127 views
0

我正在嘗試創建一個將從我的數據庫表中編輯行的窗體。 (基於我從一個StackOverflow頁面獲得的一些代碼。)無法使用表格編輯mysql行

我能夠使用相關數據填充表單,但是當我提交表單時,行未更新。實際上,我的一些列已被刪除。

我做錯了什麼?

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(); 

?> 
+0

我不明白你爲什麼用'while'語句來覆蓋'$ feed ...'變量。 – 2012-07-29 14:56:41

回答

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" ... 
+0

它似乎沒有做任何事情。它只是從數據庫中刪除了字段,就像以前一樣。 – Richard 2012-07-29 15:00:33

+0

再次檢查。另外,嘗試在PHP中回顯'$ ud_feedtitle'和其他變量的值。 – 2012-07-29 15:02:41

+0

我已經更新了一些代碼。再次嘗試解決方案。 – 2012-07-29 15:07:40