2015-02-09 13 views
-2

我在我的在線訂購系統中有我的產品清單,我想更新所選產品的數據。當我點擊編輯鏈接時,會發生什麼情況,它會將數據庫中的值發佈到其他頁面(編輯頁面),即使我已經更改了數據,數據庫也不會更新。如何更新所選產品的數據?

admin.php的(頁,所有的產品都列出)

<a href=addprod.php?id='.$row['ID'].'>EDIT</a> 

ADDPROD.PHP(頁面,管理員可以添加/更新產品)

echo'<form method="post" action="saveprod.php" class="product" style="margin-top:500px;" enctype="multipart/form-data">'; 
if (isset($_GET['id'])) { 
include('db.php'); 
$id=$_GET['id']; 
$result = mysql_query("SELECT * FROM products WHERE ID = $id"); 
echo'<input type="hidden" name="hiddenId" value="'.$id.'"> 
<table border="1" cellpadding="8px" width="100%">'; 

while($row3 = mysql_fetch_array($result)) { 
$ID = $row3['ID']; 
$Image = $row3['Image']; 
$Product = $row3['Product']; 
$Description = $row3['Description']; 
$PricePack = $row3['PricePack']; 
$PriceBox = $row3['PriceBox']; 
$Discount = $row3['Discount']; 
$Category = $row3['Category']; 
} 
echo' 
<tr><td align="right">Image</td><td><input type="text" id="img" name="img" value="'.$Image.'"/> </td></tr> 
<tr><td align="right"></td><td><input type="file" id="img" name="img" /></td </tr> 
<tr><td align="right">Product</td><td><input type="text" id="prod" name="prod" value="'.$Product.'"/></td></tr> 
<tr><td align="right">Description</td><td><textarea id="desc" name="desc" style="resize:none; height:100px; width:200px; ">'.$Description.'</textarea></td></tr> 
<tr><td align="right">Price Pack</td><td><input type="text" id="pck" name="pck" value="'.$PricePack.'"/></td></tr> 
<tr><td align="right">Price Box</td><td><input type="text" id="box" name="box" value="'.$PriceBox.'"/></td></tr> 
<tr><td align="right">Discount</td><td><input type="text" id="disc" name="disc" value="'.$Discount.'"/></td></tr> 
<tr><td align="right">Category</td><td><input type="text" id="cat" name="cat" value="'.$Category.'"/></td></tr> 
<tr><td align="right"></td><td><input type="submit" value="Save"/></a> <input type="reset" value="Clear"/></td></tr>'; 
} 
echo' </table> </form>'; 

SAVEPROD.PHP

<?php 
include('db.php'); 
$id = $_POST['ID']; 
$Image = $_POST['Image']; 
$Product = $_POST['Product']; 
$Description = $_POST['Description']; 
$PricePack = $_POST['PricePack']; 
$PriceBox = $_POST['PriceBox']; 
$Discount = $_POST['Discount']; 
$Category = $_POST['Category']; 
mysql_query("UPDATE products SET Image='$Image', Product='$Product', Description='$Description', PricePack='$PricePack', PriceBox='$PriceBox', Discount='$Discount', Category='$Category' WHERE ID='$id'"); 

header("location: admin.php"); 
    exit(); 
?> 
+2

您試圖更新您的數據?我在這裏沒有看到類似的東西。用UPDATE或''_POST'''不需要查詢你需要顯示你的saveprod.php文件,如果你有問題 – KyleMassacre 2015-02-09 04:30:18

+0

Hi @KyleMassacre我已經更新了我的問題。對不起,我無法粘貼查詢saveprod。謝謝。希望你能幫忙。 – fashionavenew 2015-02-09 05:05:18

回答

1

注意:

  • 您發佈的內容名稱不準確。
  • 確保您提供的列名,表名是正確的。對此感到非常敏感。
  • 您應該至少考慮mysqli_* prepared statement以防止SQL injections

你savepro.php應該是這樣的:

<?php 
include('db.php'); 
/* CHANGED THE WAY YOU CALL THE POST DATA BASED FROM YOUR HTML FORM */ 
$id = $_POST['hiddenId']; 
$Image = $_POST['img']; 
$Product = $_POST['prod']; 
$Description = $_POST['desc']; 
$PricePack = $_POST['pck']; 
$PriceBox = $_POST['box']; 
$Discount = $_POST['disc']; 
$Category = $_POST['cat']; 
mysql_query("UPDATE products SET Image='$Image', Product='$Product', Description='$Description', PricePack='$PricePack', PriceBox='$PriceBox', Discount='$Discount', Category='$Category' WHERE ID='$id'"); 

header("location: admin.php"); 
exit(); 
?> 

如果您在準備好的聲明中做到了,它看起來像下面的一個。所以你不會擔心SQL注入。只是一個簡單的示例:

$stmt = $YourConnection->prepare("UPDATE products SET Image=?, Product=?, Description=?, PricePack=?, PriceBox=?, Discount=?, Category=? WHERE ID=?"); 

$stmt->bind_param('sssssssi', $_POST["img"], $_POST["prod"], $_POST["desc"], $_POST["pck"], $_POST["box"], $_POST["disc"], $_POST["cat"], $_POST["hiddenId"]); 

$stmt->execute(); 
1

在你的saveprod.php上,你試圖獲取一個不存在的元素的值,檢查你的每個輸入字段的名字[R addprod.php,應該對你在你的saveprod.php

這裏發出請求相對應的是,你在做什麼的例子:

ADDPROD.PHP 

    <input type="text" id="img" name="img" value="'.$Image.'"/> 

SAVEPROD.PHP 

    $Image = $_POST['Image']; 

應該是這樣的:

ADDPROD.PHP 

    <input type="text" id="img" name="img" value="'.$Image.'"/> 

SAVEPROD.PHP 

    $Image = $_POST['img'];