PHP、MySQL表更新问题

PHP、MySQL表更新问题,php,mysql,foreign-keys,sql-update,Php,Mysql,Foreign Keys,Sql Update,我试图使用最后一列是subid(fk)引用表“subcategory”subid(PK)的形式来更新innodb表“products”,但我只想更新“products”表,而不对“products”表中的subid(fk)列做任何更改,以下是我的完整代码 <?php if (isset($_POST['PRODUCT_NAME'])) { $pid = mysql_real_escape_string($_POST['thisPID']); $catalog_no = mysql

我试图使用最后一列是subid(fk)引用表“subcategory”subid(PK)的形式来更新innodb表“products”,但我只想更新“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();
}
}
?>  

这里您遗漏了
。它应该是
这个PID

像这样调试代码提交表单并检查每个值

//查看该产品名称是否与系统中的其他产品相同 echo$sql=“更新产品集目录号='$CATALOG\u NO',产品名='$PRODUCT\u NAME',价格='$PRICE',组合='$COMPOSITION',大小='$SIZE',其中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()并不意味着查询是有效的。检查生成的查询,尝试手动运行它,看看会发生什么。

我已经有一段时间没有执行mysql\u查询了,但这行是否正确

$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\u no的值

如果线路不是这样建造的:

"UPDATE products SET CATALOG_NO='" . $catalog_no . "', PRODUCT_NAME='" . $product_name . '"... 

等等?

是的……当我们不知道问题是什么时,很难调试它。这是一个逻辑问题吗?语法问题吗?等等。问题是表单什么都不做,它只是刷新页面,不使用我使用form@henry尝试删除重定向
标题(“位置:inventory\u list.php”);
然后您应该能够看到错误。回显您发送到MySQL的SQL也很有用,您可以在参数被替换后检查它是否实际有效。@MarvinLabs删除重定向结果相同,按“进行更改”时没有更改按钮,只刷新页面,不更新任何条目。您需要的是可以帮助您分析问题的工具。Firebug或类似的工具来查看请求。检查web服务器日志以查看它是否收到请求。从脚本中回显调试信息以查看它发生了什么。在inpu中进行了更改t标记,结果仍然相同,只是刷新值不变,不更新表没有显示sql错误,正在设置表结构我已设置表structure@user692487调试不起作用,结果是相同的回显此(“UPDATE products SET CATALOG_NO='$CATALOG_NO',PRODUCT_NAME='$PRODUCT_NAME',PRICE='$PRICE',COMPOSITION='$COMPOSITION',SIZE='$SIZE',其中PID='$PID'”;exit;@Marc B Hi,感谢您的建议Marc,但结果是相同的echo$sql不会显示任何内容Yes不会显示任何内容,也只需单击“提交”即可刷新页面“Button您是否将其更改为上面显示的版本?或者您是否仍在执行
$sql=mysql\u query(…);
?您需要保留生成的sql语句。否则,您只需输出
mysql\u query()的返回值
@Marc B如果你愿意,我可以给你访问权限,你可以自己登录,看看有什么happening@MarcB我把你的代码复制粘贴在我的上面,我按照你的指示修改了它
$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());
"UPDATE products SET CATALOG_NO='$catalog_no'" 
"UPDATE products SET CATALOG_NO='" . $catalog_no . "', PRODUCT_NAME='" . $product_name . '"...