PHP PDO查询返回最后一行
我有下面的代码,我在我的项目中使用了其他地方的一个变体,它在其他地方都有效,但在本例中没有PHP PDO查询返回最后一行,php,html,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 = $ge
$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>";
}
$pdo=newpdo('sqlsrv:server=localhost;Database=db','root','password');
$GetResultsSt=$pdo->query(“通过[names]asc从[tblStaff]订单中选择不同的[names],[id”);
而($result=$getResultsInst->fetch(PDO::fetch_ASSOC)){
$names=”
“$result['names']”
试验
";
}
当我在SQLServerManagementStudio中运行该查询时,返回的行远不止一行,但当我在HTML中运行此代码时
<table class="table table-bordered">
<thead>
<tr>
<th>Name</th>
<th>ID</th>
</tr>
</thead>
<tbody>
<?php echo $names;?>
</tbody>
名称
身份证件
它只返回SQL查询的最后一行,我不知道为什么,因为我在别处使用了这个while循环,它为每个获取的结果创建了一个新行。将此
$names=
更改为$names.=
您每次都在重写值
$names = "<tr>
<td>".$result['names']."</td>
<td>Test</td>
</tr>";
$names=”
“$result['names']”
试验
";
到
$names.=”
“$result['names']”
试验
";
使用=
操作符而不是=
问题的根源不是PDO,而是赋值。您正在将同一个变量分配给其他变量,这样当它完成时,它只具有最后一个值
你真的应该积累结果
与重复的字符串连接不同,我总是发现使用一个临时数组,然后在末尾连接字符串是最容易和最容易维护的
当您使用它时,您真的应该利用这样一个事实:一个PDOStatement
对象(一个PDO::query()
函数调用的结果)是可移植的:您可以在PHPforeach
中使用它
以下是一个可能的替代方案:
<?php
// …
$names=array();
foreach($getResultsInst as $result) {
$names[]="<tr><td>{$result['names']}</td><td>Test</td></tr>";
}
$names=implode('',$names);
?>
每次循环时都要重置变量$names,请尝试$names“…您得到了下面的答案,还有一件事我建议您使用fetchall,然后使用循环来显示结果,而不是使用fetchin while循环。在这种情况下,您可以提高您的代码性能和最佳实践。非常感谢Sahil的可能重复,不能相信我忽略了这一点。”
<?php
// …
$names=array();
foreach($getResultsInst as $result) {
$names[]="<tr><td>{$result['names']}</td><td>Test</td></tr>";
}
$names=implode('',$names);
?>