Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在while循环中获取某些数据而不重新绘制_Php_Mysql_Mysqli - Fatal编程技术网

Php 如何在while循环中获取某些数据而不重新绘制

Php 如何在while循环中获取某些数据而不重新绘制,php,mysql,mysqli,Php,Mysql,Mysqli,我已经尝试将数据的名字和姓氏移出循环,但没有为数据显示任何内容。我想知道是否可以只重复产品、价格、数量而不重复名字和姓氏 <?php include ('dbconnect.php'); $sql='SELECT * FROM `user_info` ,`customer_order` WHERE user_info.user_id=customer_order.uid'; $run_query=mysqli_query($conn,$sql); if(! $

我已经尝试将数据的名字和姓氏移出循环,但没有为数据显示任何内容。我想知道是否可以只重复产品、价格、数量而不重复名字和姓氏

<?php
include ('dbconnect.php');
$sql='SELECT * FROM `user_info` ,`customer_order` WHERE user_info.user_id=customer_order.uid';

        $run_query=mysqli_query($conn,$sql);


    if(! $run_query ) {
      die('Could not get data: ' . mysqli_error());
   }

   while($row = mysqli_fetch_array($run_query, MYSQLI_ASSOC)) {
      echo "name:{$row['first_name']}   ".
            "Last:{$row['last_name']}  <br> ".
            "Product:{$row['p_name']}  <br> ".
            "Price:{$row['p_price']}  <br> " .
            "Quanity:{$row['p_qty']}  <br> ";

        }

在循环中尝试使用if语句检查是否显示相同的名称:

<?php
include ('dbconnect.php');
$sql='SELECT * FROM `user_info` ,`customer_order` WHERE user_info.user_id=customer_order.uid';

        $run_query=mysqli_query($conn,$sql);


    if(! $run_query ) {
      die('Could not get data: ' . mysqli_error());
   }

   $first_name_saved = "";
   $last_name_saved = "";
   while($row = mysqli_fetch_array($run_query, MYSQLI_ASSOC)) {
      if ($first_name_saved != row["first_name"] && $last_name_saved != row["first_name"]){
      echo "name:{$row['first_name']}   ".
            "Last:{$row['last_name']}  <br> ";
        }
        echo    "Product:{$row['p_name']}  <br> ".
            "Price:{$row['p_price']}  <br> " .
            "Quanity:{$row['p_qty']}  <br> ";

            $first_name_saved = $row['first_name'];
            $last_name_saved = $row['last_name'];


        }

为了简化上面显示的代码,并且由于SQL语句执行速度相对较快,我建议将您的语句分成两部分:首先获取名字/姓氏,然后运行一个循环以获取所需的单元格列表

<?php
include ('dbconnect.php');
// Fetch user info
$sql='SELECT * FROM `user_info` WHERE user_info.user_id=customer_order.uid';
$run_query=mysqli_query($conn,$sql);

if(! $run_query ) {
  die('Could not get data: ' . mysqli_error());
}
$row = mysqli_fetch_array($run_query, MYSQLI_ASSOC);
echo "Customer: name:{$row['first_name']} ".
     "Last:{$row['last_name']} <br>" ;

// Fetch every orders needed
$sql='SELECT `p_name`, `p_price`, `p_qty` FROM `user_info`, `customer_order` WHERE `user_info.user_id=customer_order.uid';
$run_query=mysqli_query($conn,$sql);
if(! $run_query ) {
  die('Could not get data: ' . mysqli_error());
}

while($row = mysqli_fetch_array($run_query, MYSQLI_ASSOC))
    echo "Product:{$row['p_name']} <br> ".
         "Price:{$row['p_price']}  <br> " .
         "Quantity:{$row['p_qty']}  <br> ";
}

实际上它还在做同样的事情。我需要得到名字和姓氏,以避免重复从该用户订购的相同产品。谢谢Pierre的帮助,但wonskcalb答案正是我想要的。PS:如果您试图获取的行数太多,则不应使用。那会通过储存一张巨大的桌子来吃掉你的公羊。PS2:当我使用PHP时,我曾经使用一个实用程序函数,它自己完成所有连接/执行/错误处理,提供一行代码来执行任何语句。这会变得很难看