来自 mysql 的重复结果
Duplicate results from mysql
我是 php 的新手,但我已经对我的网店进行了一些查询。
我现在开具发票有点问题。
我正在尝试将数据库中的发票数据放入我网站的 table 中,但它会自行复制。
Product_id | Product name | amount | price | subtotal|
2 kippensoep 1 €3 €3
2 kippensoep 1 €3 €3
2 kippensoep 1 €3 €3
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
如您所见,product_id
、product_names
是重复的。
这很奇怪,因为在数据库中它没有重复。
这是 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
}
?>
?>
希望大家能帮我找到解决办法
编辑
session_user_id 检查用户是否已登录。然后它 returns 来自已登录用户的 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");
您缺少 link 与 交易 table。所以你有一个 Cartesian join 出现。
添加适当的 where 条件来解决这个问题。
因为你没有提供任何table结构,我只能帮到你了!
编辑
在另一个层面上,不要使用 mysql 扩展,因为它已被弃用!
尝试检查行是否唯一。并将 GROUP BY producten.product_id
添加到您的查询中。
我是 php 的新手,但我已经对我的网店进行了一些查询。
我现在开具发票有点问题。
我正在尝试将数据库中的发票数据放入我网站的 table 中,但它会自行复制。
Product_id | Product name | amount | price | subtotal|
2 kippensoep 1 €3 €3
2 kippensoep 1 €3 €3
2 kippensoep 1 €3 €3
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
4 Loempia's 1 €10 €10
如您所见,product_id
、product_names
是重复的。
这很奇怪,因为在数据库中它没有重复。
这是 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
}
?>
?>
希望大家能帮我找到解决办法
编辑 session_user_id 检查用户是否已登录。然后它 returns 来自已登录用户的 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");
您缺少 link 与 交易 table。所以你有一个 Cartesian join 出现。
添加适当的 where 条件来解决这个问题。
因为你没有提供任何table结构,我只能帮到你了!
编辑
在另一个层面上,不要使用 mysql 扩展,因为它已被弃用!
尝试检查行是否唯一。并将 GROUP BY producten.product_id
添加到您的查询中。