PHP PDO查询返回最后一行

时间:2017-03-17 10:23:48

标签: php html

我有以下代码,我在项目的其他地方使用了其他代码,它可以在其他任何地方使用,但不是在这种情况下。

    $pdo = new PDO('sqlsrv:server=localhost;Database=db', 'root', 'password');
$getResultsInst = $pdo->query("SELECT distinct [names], [id] FROM [tblStaff] ORDER BY [names] asc");

while ($result = $getResultsInst->fetch(PDO::FETCH_ASSOC)) {
    $names = "<tr>
            <td>".$result['names']."</td>
            <td>Test</td>
            </tr>";
}

当我在SQL Server中运行该查询时,管理工作室返回的行数超过1行,但是当我在HTML中运行此代码时...

<table class="table table-bordered">
<thead>
  <tr>
    <th>Name</th>
    <th>ID</th>
  </tr>
</thead>
<tbody>
  <?php echo $names;?>
</tbody>

它只返回SQL查询的最后一行,我无法弄清楚为什么,因为我在其他地方使用了这个循环,并为每个获取的结果创建了一个新行。

3 个答案:

答案 0 :(得分:1)

将此context.runOnUiThread(new Runnable() { @Override public void run() { // Can call RequestCreator.into here } }); 更改为$names = 你每次都超越价值。

$names .=

$names = "<tr>
            <td>".$result['names']."</td>
            <td>Test</td>
            </tr>";

答案 1 :(得分:0)

使用.=运算符代替=

答案 2 :(得分:0)

导致问题的不是PDO - 这是任务。您将相同的变量重新分配给其他变量,这样当它完成时它只有最后一个值。

你真的应该积累结果。

我没有重复的字符串连接,而是总是发现它对我们来说是最容易和最易维护的临时数组,然后在最后加入字符串。

当你在这里时,你真的应该利用PDOStatement对象(PDO::query()函数调用的结果) iterable 的事实:你可以在PHP foreach中使用它。

这是一个可能的选择:

<?php   
    //  …

    $names=array();
    foreach($getResultsInst as $result) {
        $names[]="<tr><td>{$result['names']}</td><td>Test</td></tr>";
    }
    $names=implode('',$names);
?>

变量周围的大括号{}是因为PHP在插值字符串中处理数组的怪癖。