[英]PHP, MySQL Table UPDATE issue
我試圖通過使用最后一個列是對表“ subcategory” subid(PK)的subid(fk)引用的形式來更新innodb表“ products”,但是我只想更新“ products”表而無需進行任何更改“產品”表中的subid(fk)列,這是我的完整代碼
<?php
if (isset($_POST['PRODUCT_NAME'])) {
$pid = mysql_real_escape_string($_POST['thisPID']);
$catalog_no = mysql_real_escape_string($_POST['CATALOG_NO']);
$product_name = mysql_real_escape_string($_POST['PRODUCT_NAME']);
$price = mysql_real_escape_string($_POST['PRICE']);
$composition = mysql_real_escape_string($_POST['COMPOSITION']);
$size = mysql_real_escape_string($_POST['SIZE']);
// See if that product name is an identical match to another product in the system
$sql = mysql_query("UPDATE products SET CATALOG_NO='$catalog_no', PRODUCT_NAME='$product_name', PRICE='$price', COMPOSITION='$composition', SIZE='$size' WHERE PID='$pid'") or die(mysql_error());
header("location: inventory_list.php");
exit();
}
?>
<?php
if (isset($_GET['PID'])) {
$targetID = $_GET['PID'];
$sql = mysql_query("SELECT products.PID, products.CATALOG_NO, products.PRODUCT_NAME, products.PRICE, products.COMPOSITION, products.SIZE FROM products WHERE PID='$targetID' LIMIT 1") or die(mysql_error());
$productCount = mysql_num_rows($sql); // count the output amount
if ($productCount > 0) {
while($row = mysql_fetch_array($sql)){
$catalog_no = $row["CATALOG_NO"];
$product_name = $row["PRODUCT_NAME"];
$price = $row["PRICE"];
$composition = $row["COMPOSITION"];
$size = $row["SIZE"];
}
} else {
echo "You dont have that product";
exit();
}
}
?>
該表格使用以下代碼
<form action="inventory_edit.php" enctype="multipart/form-data" name="myForm" id="myform" method="post">
<table width="90%" border="0" cellspacing="0" cellpadding="6">
<tr>
<td width="20%" align="right">Product Name</td>
<td width="80%"><label>
<input name="product_name" type="text" id="product_name" size="64" value="<?php echo $product_name; ?>" />
</label></td>
</tr>
<tr>
<td align="right">Product Price</td>
<td><label>
$
<input name="price" type="text" id="price" size="12" value="<?php echo $price; ?>" />
</label></td>
</tr>
<tr>
<td align="right">Composition</td>
<td><label>
<textarea name="composition" id="composition" cols="64" rows="5"><?php echo $composition; ?></textarea>
</label></td>
</tr>
<tr>
<td align="right">Size</td>
<td><label>
<input type="text" name="size" id="size" value="<?php echo $size; ?>" />
</label></td>
</tr>
<tr>
<td> </td>
<td><label>
<input name="thisID" type="hidden" value="<?php echo $targetID; ?>" />
<input type="submit" name="button" id="button" value="Make Changes" />
</label></td>
</tr>
</table>
</form>
表單不執行任何操作(僅刷新頁面),不更新表。 如何解決這個問題呢?
這是我的表結構:表名-“產品”設置為ON UPDATE和ON DELETE CASCADE
PID(PK) CATALOG_NO PRODUCT_NAME PRICE COMPOSITION SIZE SUBCAT_ID(FK)
1 bbp2 NO2 $45 1% NO 10ml 7
$pid = mysql_real_escape_string($_POST['thisPID']);
在這里,您錯過了<input name="thisID" type="hidden">
它應該是thisPID
。
自從我做了mysql_query以來已經有一段時間了,但這行正確嗎?
$sql = mysql_query("UPDATE products SET CATALOG_NO='$catalog_no', PRODUCT_NAME='$product_name', PRICE='$price', COMPOSITION='$composition', SIZE='$size' WHERE PID='$pid'") or die(mysql_error());
看起來它正在像這樣編寫SQL
"UPDATE products SET CATALOG_NO='$catalog_no'"
而不是$ catalog_no的值。
如果該行不是這樣構造的:
"UPDATE products SET CATALOG_NO='" . $catalog_no . "', PRODUCT_NAME='" . $product_name . '"...
等等..?
像這樣調試代碼,提交表單並檢查每個值
// //查看該產品名稱是否與系統中的另一個產品相同。echo $ sql =“ UPDATE products SET CATALOG_NO ='$ catalog_no',PRODUCT_NAME ='$ product_name',PRICE ='$ price',COMPOSITION ='$ composition',SIZE ='$ size'WHERE PID ='$ pid'“;
出口;
由於查詢似乎沒有執行任何操作,但是沒有觸發錯誤條件(或者您會通過die()
調用看到它,因此您應該檢查一下生成的查詢字符串的模樣:
$sql = "UPDATE products SET CATALOG_NO='$catalog_no', PRODUCT_NAME='$product_name', PRICE='$price', COMPOSITION='$composition', SIZE='$size' WHERE PID='$pid'";
$result = mysql_query($sql) or die(mysql_error());
echo $sql;
僅僅因為查詢調用沒有執行die()
並不意味着查詢有效。 檢查生成的查詢,嘗試手動運行它,然后查看會發生什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.