2014-09-22 79 views
0

所以我一直在爲我的發票管理系統的工作,一直在修改mysql數據庫更新函數,但我似乎無法得到它實際編輯我的mysql數據庫中的記錄,原因不明。這是我的代碼爲我的edit.php頁PHP窗體更新mysql數據庫沒有完成更新

<?php 
$con = mysql_connect("localhost", "name", "password"); 
if (!$con) { 
die("Can not connect: " . mysql_error()); 
} 
mysql_select_db("inventory",$con); 

if (isset($_POST['update'])){ 
$UpdateQuery = "UPDATE invoice SET Inv #='$_POST[inv_number]', Date Type='$_POST[date_type]', ID='$_POST[id]' WHERE id='$_POST[id]'";    
mysql_query($UpdateQuery, $con); 
}; 

$sql = "SELECT * FROM invoice"; 
$myData = mysql_query($sql,$con); 
echo "<table border=1> 
<tr> 
<th>Inv #</th> 
<th>Date Type</th> 
<th>ID</th> 
</tr>"; 
while($record = mysql_fetch_array($myData)){ 
echo "<form action=edit.php method=post>"; 
echo "<tr>"; 
echo "<td>" . "<input type=text name=inv_number value=" . $record['inv_number'] . " </td>"; 
echo "<td>" . "<input type=text name=date_type value=" . $record['date_type'] . " </td>"; 
echo "<td>" . "<input type=text name=id value=" . $record['id'] . " </td>"; 
echo "<td>" . "<input type=hidden name=hidden value=" . $record['id'] . " </td>"; 
echo "<td>" . "<input type=submit name=update value=update" . " </td>"; 
echo "</tr>"; 
echo "</form>"; 
} 

echo "</table>"; 
mysql_close($con); 

?> 

這是我在我的search.php頁面上顯示我的記錄的按鈕。

<a href='edit.php?edit=$row[id]'>edit</a> 

在進入edit.php頁時,我在我的特定記錄編輯按鈕點擊,它顯示在我的表,這是不理想的所有記錄,我更願意看到的只是記錄我想要編輯/更新。這兩個問題是我一直無法解決的問題。任何幫助表示讚賞。 Thx提前給大家。

+1

你'SELECT'語句沒有一個'WHERE'條款,所以它從你的'invoice'拉的所有行表。你的php代碼的'while'循環將盡職盡責。請嘗試添加一個'WHERE'子句並讓我們知道發生了什麼。 – 2014-09-22 12:34:55

+1

好吧,由於那個明顯的SQL注入漏洞,我懷疑你不必擔心太長時間在數據庫中有這麼多記錄。你可能想開始閱讀這裏:http://php.net/manual/en/security.database.sql-injection.php – David 2014-09-22 12:36:38

+0

增加了這個$​​ sql =「選擇*從發票WHERE編號='$ id'」 ;但編輯表單字段消失 – WebEducate 2014-09-22 12:40:39

回答

3

你的MySQL列名真的是Inv#嗎?如果是這樣,你需要添加像這樣的反引號:

`Inv #` 

但看看你的表格,它看起來像字段名稱是inv_number。另外,您正在查看所有記錄,因爲您的select子句沒有where修飾符。

+0

是的,在我將名稱Inv#和Date Type和ID更改爲inv_number date_type和id後,它終於可以工作了。我還包括反引號。大! – WebEducate 2014-09-22 12:58:42

+0

但我仍然無法選擇一個記錄進行編輯,點擊甚至與此WHERE語句之後... $ sql =「SELECT * FROM invoice WHERE id ='$ id'」; – WebEducate 2014-09-22 13:00:47

1

替換你的行:此行

$sql = "SELECT * FROM invoice"; 

$where = ''; 
    if(!empty($_GET) && !empty($_GET['edit'])) { 
     $where = ' where id='.$_GET['edit']; 
    } 
    $sql = "SELECT * FROM invoice".$where; 
+0

它工作得很好,但一個小細節,點擊更新後,它在表中添加第二個記錄進行編輯,我們可以防止發生? – WebEducate 2014-09-22 13:04:06

+0

實際上它增加了數據庫中的所有現有記錄,我以爲只有一個,因爲我只有2個測試記錄在我的數據庫 – WebEducate 2014-09-22 13:05:58

+0

你能告訴我什麼是表的結構? – WordpressCoder 2014-09-22 13:33:14