Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新MySQL中包含外键列的表_Php_Mysql_Foreign Keys_Sql Update - Fatal编程技术网

Php 更新MySQL中包含外键列的表

Php 更新MySQL中包含外键列的表,php,mysql,foreign-keys,sql-update,Php,Mysql,Foreign Keys,Sql Update,我正在处理3个与外键链接的表,并在更新级联时设置为,在删除级联时设置为。这些表是类别、子类别和产品 产品表-PID(PK)、产品名称、子产品编号(FK) 子类别表格-子类别名称(PK)、子类别名称、catid(FK) 类别表格-catid(主键),类别名称 当我想更改产品名称时,UPDATEproducts表的正确查询是什么?另外,如果我想使用表单更改产品的子类别 我使用的表单成功地预填充了字段-产品名称、子类别名称,但它不更新products表中的记录,这意味着它不做任何操作,也不更改产品名称

我正在处理3个与外键链接的表,并在更新级联时设置为
,在删除级联时设置为
。这些表是
类别
子类别
产品

产品
表-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;