2012-05-29 41 views
0

我想更新一個有5個字段的表中的數據。 這些字段如下:proj_name,cust_name,地址,成本和詳細信息。更新表中的數據php mysql的錯誤

這裏是我的更新代碼(update_orde.php):

<?php 
include("connect.php"); 
// get value of id that sent from address bar 
$id=$_GET['id']; 
// Retrieve data from database 
$sql="SELECT * FROM project WHERE id='$id'"; 
$result=mysql_query($sql); 

$rows=mysql_fetch_array($result); 
?> 
<table width="400" border="0" cellspacing="1" cellpadding="0"> 
<tr> 
<form name="form1" method="post" action="update_orde_suc.php"> 
<td> 
<table width="100%" border="0" cellspacing="1" cellpadding="0"> 
<tr> 

<td colspan="5"><strong>Update Data</strong> </td> 
</tr> 
<tr> 
<td align="center"><strong>Project Name</strong></td> 
<td align="center"><strong>Customer</strong></td> 
<td align="center"><strong>Address</strong></td> 
<td align="center"><strong>Cost</strong></td> 
<td align="center"><strong>Details</strong></td> 
</tr> 
<tr> 
<td><input name="pn" type="text" id="pn" value="<? echo $rows['proj_name']; ?>"></td> 
<td align="center"><input name="cn" type="text" id="cn" value="<? echo $rows['cust_name']; ?>" size="15"></td> 
<td align="center"><input name="add" type="text" id="add" value="<? echo $rows['address']; ?>" size="15"></td> 
<td><input name="cost" type="text" id="cost" value="<? echo $rows['cost']; ?>" size="15"></td> 
<td><input name="details" type="text" id="details" value="<? echo $rows['details']; ?>" size="15"></td> 
</tr> 
<tr> 
<td align="center" colspan="5"><input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"> <input type="submit" name="Submit" value="Submit"></td> 
</tr> 
</table> 
</td> 
</form> 
</tr> 
</table> 


<? 

// close connection 
mysql_close(); 

?> 

和這裏的成功插入到數據庫(update_orde_suc.php):

<?php 
include("connect.php"); 
$id=$_POST['id']; 
$pn = $_POST['proj_name']; 
$cn = $_POST['cust_name']; 
$add = $_POST['address']; 
$cost = $_POST['cost']; 
$det = $_POST['details']; 

// update data in mysql database 
$sql="UPDATE project SET proj_name='$pn', cust_name='$cn',address='$add', cost='$cost', details='$det' WHERE id='$id'"; 
$result=mysql_query($sql); 

// if successfully updated. 
if($result){ 
echo "Successful"; 
echo "<BR>"; 
echo "<a href='orders_edit.php'>View result</a>"; 
} 

else { 
echo "ERROR"; 
} 

?> 

的問題是,當我嘗試更改數據時出現錯誤,表示update_orde_suc.php的3個第一索引是未定義的(成本和細節都可以)。

最奇怪的是,我用另一個表更新完全相同的代碼,它工作得很好,我現在做的唯一的事情是改變變量的名稱,以符合新表的名稱。

+0

它在我看來,你的SQL是注射的vurnerable。請閱讀http://www.unixwiz.net/techtips/sql-injection.html或其他站點 –

+0

您可以在表單中很自然地使用'proj_name'來調用字段'pn','cn'和'add', 'cust_name'和'地址'不在那裏。 – JJJ

+1

在這種情況下你應該做的第一件事是添加'print_r($ _POST)'並檢查表單實際發送的內容。 – JJJ

回答

3

你混淆了很多變量。例如,將輸入的proj_name保存爲$pn,稍後將其插入到您使用的數據庫$proj_name中。您必須在整個代碼中使用變量名稱才能工作。

+0

哦是啊..對不起,這是測試代碼(我試圖插入他們作爲表名),沒有我有變量正確! – ekptwtos

+0

在包含後添加'print_r($ _ POST)',你看到了什麼? – slash197

+0

我看到成本和細節的價值,但沒有名稱cust和address – ekptwtos