PHP Mysqli一个接一个地触发查询

时间:2015-07-30 09:07:10

标签: php mysql mysqli

我正在尝试从一个表中获取第一个ID,然后在获取所有ID之后,我正在尝试获取所有该ID的数量。

我的问题是

  • 因为我想选择第一个查询完成结果的值
  • 第一次查询完成后,我无法触发第二次查询两者都是一次触发

    第一次查询

    $query ="SELECT * FROM abc WHERE  xyz='xyz' And Standard='xyz' ";
            $data=mysqli_query($mysqli,$query)or die(mysqli_error());
            $ID = array();
            while($row=mysqli_fetch_array($data)){
                $ID[] = $row['ID'];
    
    
        }
        $IDall = "'" . implode("','", $ID) . "'";
    

第二次查询

        $query="SELECT  mobno FROM euser WHERE UserId IN ($IDall)" ;
                    $data=mysqli_query($mysqli,$query)or die(mysqli_error());
                    $mobiles = array();
                    while($row=mysqli_fetch_array($data)){
                        $mobiles[] = $row['MobileNum'];

                    }
                    $mobilesStr = implode(',', $mobiles);


                    echo $mobilesStr;


                }

3 个答案:

答案 0 :(得分:0)

试试这个

SELECT  mobno FROM euser WHERE UserId IN (SELECT ID FROM abc WHERE  xyz='xyz' And Standard='xyz');

答案 1 :(得分:0)

您不需要2个查询。只有1就够了

SELECT  mobno FROM euser WHERE UserId IN (
  SELECT ID FROM abc ...
)

答案 2 :(得分:0)

试试这个

    $query ="SELECT * FROM abc WHERE  xyz='xyz' And Standard='xyz' ";
    $data=mysqli_query($mysqli,$query)or die(mysqli_error());

    if(mysqli_num_rows($data) > 0) {
       $ID = array();
      while($row=mysqli_fetch_array($data)){
        $ID[] = $row['ID'];
      }
      $IDall = "'" . implode("','", $ID) . "'";

      $query2="SELECT  mobno FROM euser WHERE UserId IN ($IDall)" ;
      $data2=mysqli_query($mysqli,$query2)or die(mysqli_error());
      $mobiles = array();
      while($row=mysqli_fetch_array($data2)){
        $mobiles[] = $row['MobileNum'];
      }
      $mobilesStr = implode(',', $mobiles);
      echo $mobilesStr;
     }

在第二个查询将在第一个查询有结果时执行。