Php 来自mysql的重复结果

Php 来自mysql的重复结果,php,mysql,duplicate-data,invoices,webshop,Php,Mysql,Duplicate Data,Invoices,Webshop,我是php新手,但我已经为我的网店做了一些查询。 我现在在开发票方面有点问题。 我试图将数据库中的发票数据放在我的网站的一个表中,但它本身是重复的 产品标识|产品名称|金额|价格|小计| 2 kippensoep 1欧元3欧元3 2 kippensoep 1欧元3欧元3 2 kippensoep 1欧元3欧元3 4 Loempia的1欧元10欧元 4 Loempia的1欧元10欧元 4 Loempia的1欧元10欧元 4 Loempia的1欧元10欧元 如您所见,产品标识,产品名称是重复的。

我是php新手,但我已经为我的网店做了一些查询。 我现在在开发票方面有点问题。 我试图将数据库中的发票数据放在我的网站的一个表中,但它本身是重复的

产品标识|产品名称|金额|价格|小计|
2 kippensoep 1欧元3欧元3
2 kippensoep 1欧元3欧元3
2 kippensoep 1欧元3欧元3
4 Loempia的1欧元10欧元
4 Loempia的1欧元10欧元
4 Loempia的1欧元10欧元
4 Loempia的1欧元10欧元
如您所见,
产品标识
产品名称
是重复的。 这很奇怪,因为在数据库中它没有被复制。 下面是php代码

<?php
  $maxfac1 = mysql_fetch_array(mysql_query("SELECT MAX(transactie.factuur_id) FROM transactie , account WHERE transactie.id = $session_user_id"));

  unset ($maxfac1[0]); 
  $maxfactuur_id = implode (" ",$maxfac1);

  $productinfo = mysql_query("SELECT * FROM producten, transactie, factuur WHERE producten.product_id = factuur.product_id AND factuur.factuur_id = $maxfactuur_id AND factuur.gebruikers_id= $session_user_id");

  $totaal=0;
  $subtotaal=0;

  while ($row = mysql_fetch_array($productinfo))
  {
  ?>
  <tr>
    <td><?php echo $row['product_id']?></td>
    <td><?php echo $row['name'] ?></td>
    <td><?php echo $row['amount'] ?></td>
    <td>€<?php echo $row['price'] ?></td>
    <?php $subtotaal = ($row['price']*$row['amount']);?>
    <td>€<?php echo "$subtotaal" ;$totaal+= $subtotaal;?></td>
  </tr>

  <?php
  }
  ?>
?>

€
€
?>
我希望你们能帮我找到解决办法

编辑
会话\u用户\u id检查用户是否已登录。然后返回登录用户的id

尝试添加DISTINCT关键字

$productinfo = mysql_query("SELECT DISTINCT * FROM producten, transactie, factuur WHERE producten.product_id = factuur.product_id AND factuur.factuur_id = $maxfactuur_id AND factuur.gebruikers_id= $session_user_id");

尝试添加DISTINCT关键字

$productinfo = mysql_query("SELECT DISTINCT * FROM producten, transactie, factuur WHERE producten.product_id = factuur.product_id AND factuur.factuur_id = $maxfactuur_id AND factuur.gebruikers_id= $session_user_id");

您缺少与transactie表的链接。所以你有一个新的想法

添加适当的where条件以修复该问题

由于您没有提供任何表格结构,我无法为您提供更多帮助

编辑
在另一个层面上,不要使用mysql扩展,因为它已被弃用

缺少与transactie表的链接。所以你有一个新的想法

添加适当的where条件以修复该问题

由于您没有提供任何表格结构,我无法为您提供更多帮助

编辑

在另一个层面上,不要使用mysql扩展,因为它已被弃用

尝试检查行是否唯一。并将
按产品分组。产品id
添加到查询中。

尝试检查行是否唯一。并将
GROUP BY producten.product\u id
添加到查询中。

我强烈建议在编写查询时使用PDO(准备好的语句),因为这些查询(准备好的查询)是安全的。您的代码中有很多变量,我相信很快您就会使用客户/用户输入来过滤查询中的数据。因此,学习这些天推荐的技术并帮助您保存数据库数据始终是一个不错的决定(特别是对初学者来说)。构建productinfo的正确查询,然后在mysql中查询以正确跟踪并检查它。@serjoscha
$maxfactuur\u id
纯粹是SQL查询的结果,所以它不需要逃逸。因此,如何接收
$session\u user\u id
确实很重要。另请注意,
mysql
已被弃用,应使用
mysqli
。@jorphp如果您发布数据库的架构和一些内容,将有所帮助。请尝试使用
mysql\u fetch\u assoc()
。还可以尝试在mysql控制台执行mysql查询以检查结果。我强烈建议在编写安全的查询(准备好的查询)时使用PDO(准备好的语句)。您的代码中有很多变量,我相信很快您就会使用客户/用户输入来过滤查询中的数据。因此,学习这些天推荐的技术并帮助您保存数据库数据始终是一个不错的决定(特别是对初学者来说)。构建productinfo的正确查询,然后在mysql中查询以正确跟踪并检查它。@serjoscha
$maxfactuur\u id
纯粹是SQL查询的结果,所以它不需要逃逸。因此,如何接收
$session\u user\u id
确实很重要。另请注意,
mysql
已被弃用,应使用
mysqli
。@jorphp如果您发布数据库的架构和一些内容,将有所帮助。请尝试使用
mysql\u fetch\u assoc()
。还可以尝试在mysql控制台上执行mysql查询以检查结果。我们也尝试过这种方法,但仍然不起作用。我们的数据库中没有任何双栏。@jorphp
DISTINCT
从查询中去除重复项。因此,我不认为在这段代码中还有重复的代码。有问题的代码都是你的代码吗?是的!由于while循环,表正在生成。我的意思是:是的,它是。*;)我们也试过了,但还是不行。我们的数据库中没有任何双栏。@jorphp
DISTINCT
从查询中去除重复项。因此,我不认为在这段代码中还有重复的代码。有问题的代码都是你的代码吗?是的!由于while循环,表正在生成。我的意思是:是的,它是。*;)他可以添加
groupbyproducten.product\u id
for itor删除未使用的事务表。他可以添加
groupbyproducten.product\u id
for itor删除未使用的事务表。