如何使用来自mysql的php使用for循环从数据库中获取数据?

时间:2018-02-27 04:25:51

标签: php mysql

我正在尝试使用for循环格式从数据库中获取数据但是循环是执行但是数据无法重试。

这是我的PHP代码

  $resultss = array_unique($Employeeids);
              // echo sizeof($resultss);


            for($i = 0; $i<=sizeof( $resultss); $i++) 
                {
                     //echo $resultss[$i]. "<br>";

                     if($resultss[$i] !='')
                     {

                         $uniqueemp_id[$i]=$resultss[$i];
                         echo $uniqueemp_id[$i]."hi". "<br>";

                        $sql[$i]="Select Token From user Where Employeeid= '".$uniqueemp_id[$i]."'";

                            $result[$i]=mysqli_query($con,$sql[$i]);
                            echo $sql[$i];//upto here loop is executing correctly but while is not executing.
                                 while($row = mysqli_fetch_assoc($result[$i]))
                                    {
                                        echo $tokens =  $row['Token']. "<br>";          
                                    }


                    mysqli_close($con);

                     }
                }
回声屏幕 This is my output screen echo

enter image description here

我可以获取并显示员工ID 9的令牌,但无法显示员工ID 15的令牌,我无法找到错误,任何人都可以帮我解决此问题!

1 个答案:

答案 0 :(得分:0)

您的核心问题是在第一次迭代结束时关闭连接(mysqli_close)。将其移至至少在循环外部和下方。

修改

这里有很多代码改进的机会。在我看到缺乏准备好的陈述之前,我会忽略它们。按顺序排列。

  1. 至少在提供的代码段中,不需要$i。只需使用foreach,并清理随后对$i的引用:

    foreach ( $resultss as $empId ) {
    
  2. 样式方面,使用continue为自己保留一些缩进。而不是

    if($empId != '') {
        ...
    

    使用:

    if ( ! $empId )
        continue;
    
    ...
    
  3. 除非您稍后需要$uniqueemp_id,否则根本不使用它。坚持$empId

  4. 一般来说,养成使用绑定参数的预备语句的习惯。它是一种安全的东西,它是一种表现的东西,它是一种简单的东西,它是一种好习惯。就这么做。

    准备单个查询,并多次执行,或使用IN SQL运算符获取所有结果。单个准备好的查询多次执行:

    $sql = 'SELECT token FROM user WHERE employeeid = ?';
    $sth = mysqli_prepare($con, $sql);    # "statement handle"
    if ( ! $sth )
        die('Unable to create prepared statement');
    
    foreach ( $resultss as $empId ) {
        ...
        mysqli_stmt_bind_param($sth, "s", $empId);
        mysqli_stmt_execute( $sth );
        $result = $sth->get_result();
        while ($row = $result->fetch_assoc())
            echo "Token: {$row['token']}<br>";
    }
    

    我将IN操作员作为&#34;练习留给读者&#34;。