Php 更新MySQL中包含外键列的表
我正在处理3个与外键链接的表,并在更新级联时设置为Php 更新MySQL中包含外键列的表,php,mysql,foreign-keys,sql-update,Php,Mysql,Foreign Keys,Sql Update,我正在处理3个与外键链接的表,并在更新级联时设置为,在删除级联时设置为。这些表是类别、子类别和产品 产品表-PID(PK)、产品名称、子产品编号(FK) 子类别表格-子类别名称(PK)、子类别名称、catid(FK) 类别表格-catid(主键),类别名称 当我想更改产品名称时,UPDATEproducts表的正确查询是什么?另外,如果我想使用表单更改产品的子类别 我使用的表单成功地预填充了字段-产品名称、子类别名称,但它不更新products表中的记录,这意味着它不做任何操作,也不更改产品名称
,在删除级联时设置为。这些表是类别
、子类别
和产品
产品
表-PID(PK)、产品名称、子产品编号(FK)
子类别
表格-子类别名称(PK)、子类别名称、catid(FK)
类别
表格-catid(主键),类别名称
当我想更改产品名称时,UPDATE
products表的正确查询是什么?另外,如果我想使用表单更改产品的子类别
我使用的表单成功地预填充了字段-产品名称、子类别名称,但它不更新products表中的记录,这意味着它不做任何操作,也不更改产品名称和子类别名称
感谢您的帮助
我使用下面的代码
<?php
// Parse the form data and add inventory item to the system
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']);
$subcat = mysql_real_escape_string($_POST['SUBCAT_ID']);
// See if that product name is an identical match to another product in the system
$sql = mysql_query("UPDATE products SET CATALOG_N0='$catalog_no', PRODUCT_NAME='$product_name', PRICE='$price', COMPOSITION='$composition', SIZE='$size', SUBCAT_ID='$subcat' WHERE PID='$pid'");
header("location: inventory_list.php");
exit();
}
?>
您没有将产品名称用作外键,因此这是一个简单的标准
UPDATE products SET productname='New Name of Product' where PID=XXX;
我会成功的。产品中的子产品也是如此。只要子类别表中存在新的子类别ID,您就可以通过简单的
UPDATE products SET subcatid=New_ID where PID=XXX;
您在表单中尝试的查询是什么?发布他们。用代码更新你的问题。评论不够长。我想这就是我正在做的,我正在使用更新产品集PRODUCT_NAME='$PRODUCT_NAME',其中PID=1;这应该没有什么问题,除非$product\u名称没有正确转义。如果其中有引号,它将“中断”查询。始终检查您的查询是否成功。甚至一个基本的$result=mysql\u查询(…)或die(mysql\u error())
将为您节省大量时间,让您了解为什么无法正常工作。因此,要使用$product_name,我必须正确地转义它。您必须转义插入查询中的任何数据,否则您将面临SQL注入攻击,您可以在此网站上找到数不清的示例。但是products表上的SUBACT_id(FK),我如何更新它,例如,如果我想更改产品的子类别,我将如何做?
UPDATE products SET subcatid=New_ID where PID=XXX;