从两个主键上的MySql上的多对多表中获取一行

时间:2016-11-28 10:35:23

标签: php mysql

我有两个主要表:

  • 产品
  • 分类

然后我有一个名为Price的第3个多对多表,其中包含行:

   IdProducts  (Primary key and Foreign Key from Products)
   IdCategory  (Primary key and Foreign Key from Category)
   Price

第3个表没有每行的个人ID,只有3行。

也就是说,我已经能够使用产品和类别中的数据在第3个表上插入数据而没有任何问题。现在我尝试在一个小程序中编辑这些数据,但如果预先填写编辑表单,我就无法获得。我使用以下代码:

$sql1 = mysqli_query($con,"SELECT * FROM table3 WHERE (idProducts='$variable1' AND idCategory='$variable2') LIMIT 1") or die(mysql_error());

$PriceCount = mysqli_num_rows($sql1);

if($productCount>0){
     while($row = mysqli_fetch_array($sql1)){
       $priceshow= $row["price"];
       $idCategoryshow= $row["idCategory"];
       $idProductshow= $row["idProduct"];
     }
}

因此,我可以在html中显示价格,类别ID和产品ID。

我不知道我做错了什么,但我最好的选择是错误发生在MySql查询中:

  "SELECT * FROM table3 WHERE (idProduct='$variable1' AND idCategory='$variable2') LIMIT 1"

即使我发送了我应该使用的数据,也不返回任何值。 这是我应该如何尝试获取所有行?或者也许这样的事情可以完成,我需要个人身份证价格?

编辑:我通过在href链接上发送变量找到了一个肮脏的工作...无论如何我在尝试更新所需的行时面临几乎相同的问题,更新的mysql代码是这样的:

"UPDATE table3 SET (price1='$var1' AND price2='$var2') WHERE (price.idProduct='$idProduct' AND price.idCategory='$idCategory') "

我收到以下错误 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在#SET;(&= 39; 123231211.00' AND price =' 1212654.00')WHERE(表3)附近使用正确的语法.idProduct =' QEW21' AND'在第1行

1 个答案:

答案 0 :(得分:0)

最后我可以去睡觉了xd

"UPDATE table3 SET price1='$var1',  price2='$var2' WHERE
price.idProduct='$idProduct' AND price.idCategory='$idCategory'"

我使用"SET(X AND Y)""WHERE(X AND Y)"并检查AND的正确使用结果实际上就是:"SET X, Y" and "WHERE X AND Y"