如何重复变量的值?

时间:2014-02-01 10:41:58

标签: php mysql

我正在学习如何使用MySQL,目前我成功地从我的表中显示数据,使用:

while($objResult2 = mysqli_fetch_assoc($objQuery_product)) {

使用此变量$objResult2["id_product"];显示结果,这样我可以从数据库中获取任何我想要的字段:$objResult2["name"]; $objResult2["email"];等。

但如果我在表格中有更多具有相同id_product的行

,我会怎么做

我想写一个if语句,它会重复id_product重复。怎么做?如果这是一项很多工作,至少请告诉我正确的教程,我必须阅读。因为我正在尝试第二天修复此问题,并搜索谷歌但我没有找到我需要的东西,或者我可能理解它....

这是我的查询

$sql_product = "SELECT * FROM ps_product AS prod";
$join_product = " LEFT JOIN ps_product_lang AS lang ON lang.id_product = prod.id_product";
$join2_product = " LEFT JOIN ps_stock_available AS stok ON stok.id_product = prod.id_product";
$where_product =" WHERE prod.id_category_default = $idp AND lang.id_lang = 8";

$sql_product = $sql_product.$join_product.$join2_product.$where_product;
$objQuery_product = mysqli_query($objConnect, $sql_product) or die ("Error Query [".$sql_product."]");

3 个答案:

答案 0 :(得分:0)

好的,我们走了。例如,您使用此查询获取数据。

select id_product, name from PRODUCTS; 

假设上面的查询为您提供了5条记录。

id_product名称 1蝙蝠 2曲棍球 2曲棍球 3鞋 4手套

现在你有2.2和曲棍球,曲棍球。而不是这样想你必须引入if语句来过滤重复记录或同名或id_product记录。

  

像这样重写你的SQL查询。

select distinct id_product, name from PRODUCTS;

或者,如果你需要每个人的数量,那么我的朋友你会写这样的查询......

Graham Ritchie,如果Andrei需要计算每个重复记录,那么我们将在查询中执行类似的操作。

SELECT PRODUCT_ID, 
 COUNT(PRODUCT_ID) AS Num_Of_Occurrences
FROM PRODUCTS
GROUP BY PRODUCT_ID
HAVING ( COUNT(PRODUCT_ID) > 1 );

答案 1 :(得分:0)

您可以在查询中使用id_product关键字简单地删除相同的DISTINCT。如:

SELECT DISTINCT id_product FROM my_table

这将只为您提供不同ID的结果。

第二种方法是将数组内的输出值。

在你的while循环中:

$my_array[] = $objResult2["id_product"];

然后使用array_filter删除数组中的所有重复项。 如果你想计算重复的值,你也可以使用array_count_values()

答案 2 :(得分:0)

SELECT id_product,COUNT(*) AS count 
FROM tablename 
GROUP BY id_product;

此查询将在您的查询中返回两个项目

$objResult2["id_product"] //and
$objResult2["count"]

if语句只是

if($objResult2["count"] > 1){
    //Do whatever you want to do with items with more than 1 occurence.
    //for this example we will echo out all of the `product_id` that occur more than once.

    echo $objResult2["id_product"] . " occurs more than once in the database<br/>";
}