我有以下代码,我在项目的其他地方使用了其他代码,它可以在其他任何地方使用,但不是在这种情况下。
$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查询的最后一行,我无法弄清楚为什么,因为我在其他地方使用了这个循环,并为每个获取的结果创建了一个新行。
答案 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在插值字符串中处理数组的怪癖。