【问题标题】:How do i return all elements in while loop?如何在while循环中返回所有元素?
【发布时间】:2018-07-22 19:52:37
【问题描述】:

我有一个从数据库中获取日志的函数,但每当我试图回应这一点时。我只得到第一项。

        function getCoins($odb) {
        $website = new website();
        $SQLGetCoinsLog = $odb -> query("SELECT * FROM `user_logs` ORDER BY `id` DESC");
        while ($getInfo = $SQLGetCoinsLog -> fetch(PDO::FETCH_ASSOC)) {
            $id = $getInfo['id'];
            $userid = $getInfo['userid'];
            $nazwa = $getInfo['nazwa'];
            $cena = $getInfo['cena'];
            $transid = $getInfo['transid'];
            $data = $website->converTimestamp($getInfo['data']);
            $result = '
                <tr class="text-center">
                    <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td>
                    <td>'.$nazwa.'</td>
                    <td>'.$cena.'PLN</td>
                    <td>'.$transid.'</td>
                    <td>'.$data.'</td>
                </tr>                                           
            ';
        }
        return $result;
        }

【问题讨论】:

  • 要么在循环中回显结果,要么创建一个包含所有结果的数组并稍后回显它们

标签: php database function pdo


【解决方案1】:

添加

$result = "";

在你的函数顶部定义它(在while循环之前),然后改变你的

$result = ' <tr class="text-center"> <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td> <td>'.$nazwa.'</td> <td>'.$cena.'PLN</td> <td>'.$transid.'</td> <td>'.$data.'</td> </tr> ';

$result .= ' <tr class="text-center"> <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td> <td>'.$nazwa.'</td> <td>'.$cena.'PLN</td> <td>'.$transid.'</td> <td>'.$data.'</td> </tr> ';

注意等号旁边的点,这将添加而不是覆盖您的变量。

【讨论】:

    【解决方案2】:

    您有几个选择。
    在循环中回显它们(不会“返回”它们),这样实际上并不能回答您的问题,但是由于它是您构建的表格,因此在某些时候我认为它必须被回显。

       function getCoins($odb) {
        $website = new website();
        $SQLGetCoinsLog = $odb -> query("SELECT * FROM `user_logs` ORDER BY `id` DESC");
        while ($getInfo = $SQLGetCoinsLog -> fetch(PDO::FETCH_ASSOC)) {
            $id = $getInfo['id'];
            $userid = $getInfo['userid'];
            $nazwa = $getInfo['nazwa'];
            $cena = $getInfo['cena'];
            $transid = $getInfo['transid'];
            $data = $website->converTimestamp($getInfo['data']);
            echo'
                <tr class="text-center">
                    <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td>
                    <td>'.$nazwa.'</td>
                    <td>'.$cena.'PLN</td>
                    <td>'.$transid.'</td>
                    <td>'.$data.'</td>
                </tr>                                           
            ';
        }
        }
    

    或者你可以用结果构建一个数组:

       function getCoins($odb) {
        $website = new website();
        $SQLGetCoinsLog = $odb -> query("SELECT * FROM `user_logs` ORDER BY `id` DESC");
        while ($getInfo = $SQLGetCoinsLog -> fetch(PDO::FETCH_ASSOC)) {
            $id = $getInfo['id'];
            $userid = $getInfo['userid'];
            $nazwa = $getInfo['nazwa'];
            $cena = $getInfo['cena'];
            $transid = $getInfo['transid'];
            $data = $website->converTimestamp($getInfo['data']);
            $result[] = '
                <tr class="text-center">
                    <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td>
                    <td>'.$nazwa.'</td>
                    <td>'.$cena.'PLN</td>
                    <td>'.$transid.'</td>
                    <td>'.$data.'</td>
                </tr>                                           
            ';
        }
        return $result;
        }
    
    //To echo them in main program:
    Echo implode("\n", getCoins($odb));
    

    或者你可以构建一个包含所有结果的字符串:

        function getCoins($odb) {
        $website = new website();
        $SQLGetCoinsLog = $odb -> query("SELECT * FROM `user_logs` ORDER BY `id` DESC");
        $result = "";
        while ($getInfo = $SQLGetCoinsLog -> fetch(PDO::FETCH_ASSOC)) {
            $id = $getInfo['id'];
            $userid = $getInfo['userid'];
            $nazwa = $getInfo['nazwa'];
            $cena = $getInfo['cena'];
            $transid = $getInfo['transid'];
            $data = $website->converTimestamp($getInfo['data']);
            $result .= '
                <tr class="text-center">
                    <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td>
                    <td>'.$nazwa.'</td>
                    <td>'.$cena.'PLN</td>
                    <td>'.$transid.'</td>
                    <td>'.$data.'</td>
                </tr>                                           
            ';
        }
        return $result;
        }
    

    【讨论】:

      【解决方案3】:

      您提供数据库行结果的这些变量没有用,或者您无法使用它们,因为它们都是local variables,或者它们在循环重复后被删除并重新创建,因为您在循环中创建了它们,您应该创建它们在循环之外,(例如)我认为你只需要结果,所以我只需将结果添加到循环之外:-

      function getCoins($odb) {
          $website = new website();
          $SQLGetCoinsLog = $odb -> query("SELECT * FROM `user_logs` ORDER BY `id` DESC");
          $result = array();
          while ($getInfo = $SQLGetCoinsLog -> fetch(PDO::FETCH_ASSOC)) {
              $id = $getInfo['id'];
              $userid = $getInfo['userid'];
              $nazwa = $getInfo['nazwa'];
              $cena = $getInfo['cena'];
              $transid = $getInfo['transid'];
              $data = $website->converTimestamp($getInfo['data']);
              array_push($result, '
                  <tr class="text-center">
                      <td><a href="https://steamcommunity.com/profiles/'.$userid.'" target="_blank">'.$userid.'</a></td>
                      <td>'.$nazwa.'</td>
                      <td>'.$cena.'PLN</td>
                      <td>'.$transid.'</td>
                      <td>'.$data.'</td>
                  </tr>                                           
              ');
          }
          return $result;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-08
        • 2016-01-02
        • 1970-01-01
        • 2018-08-10
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        相关资源
        最近更新 更多