php - 只有第一列被回显,而不是全部
问题描述
这里有什么问题:
$itemsa = "date, name, phone, address, color, height";
function users($id) {
global $db;
global $_POST;
global $itemsa;
$sql = "select * from users where id = :aid limit 1";
$st = $db->prepare($sql);
$st -> execute([":aid" => $id]);
$arra = explode(', ', $itemsa);
$items = "";
$x = 0;
while ($row = $st->fetch()) {
$items .=
"<div class='rtitle' data-id = " . $row['id'] . ">" . mb_strtoupper($arra[$x]) . "</div>\n" .
"<div class='rstory' data-id = " . $row['id'] . ">" . $row[$x] . "</div>\n";
$x++;
}
echo $items;
}
结果:
<div class='rtitle' data-id = 3>DATE</div>
<div class='rstory' data-id = 3>21-09-2018 00:16</div>
所以只有第一列被回显,我预计有 6 个,即全部。
解决方案
您应该循环传递给函数的列名数组,而不是获取结果,因为您只从查询中返回 ONE ROW,并且您对该行中返回的列感兴趣。
您还应该将所有这些全局变量(除了 $_POST 它是一个全局变量并且您似乎并没有在函数中使用)作为参数传递给您的函数调用。
function users($db, $id, $itemsa) {
$sql = "select * from users where id = :aid limit 1";
$st = $db->prepare($sql);
$st -> execute([":aid" => $id]);
// you only have one row returned, so a simple fetch
$row = $st->fetch(PDO::FETCH_ASSOC);
$arra = explode(', ', $itemsa);
$items = "";
foreach ($itemsa as $col ) {
$items .=
"<div class='rtitle' data-id = " . $row['id'] . ">" . mb_strtoupper($row[$col]) . "</div>\n" .
"<div class='rstory' data-id = " . $row['id'] . ">" . $row[$col] . "</div>\n";
}
echo $items;
}
$itemsa = "date, name, phone, address, color, height";
users($db, $id, $itemsa);
推荐阅读
- javascript - 如何从JS中的对象中获取数组
- python - Python删除由数据框列组成的列表列表中的外引号
- python - 最大序列长度对 Grover 的影响
- three.js - 如何通过鼠标选择矩形选择对象?
- javascript - 如果选项卡自动重新加载,浏览器扩展“browser.tabs.onUpdated.addListener”适用于 Chrome,但不适用于 Firefox
- css - Css Grid 媒体查询元素被推到外面
- c++ - 如何编写递归多数元素算法
- google-app-engine - 为 Google APP Engine 更新 composer.json
- java - 我没有在 OnTouchListners 中获得按钮释放 Toast
- python - 我尝试使用 python 进行网页抓取,但输出为空。我做错什么了吗?