我正在尝试打印出我创建的测试表中的所有行和列。
我的相关代码:
$sql = "select * from ITEM";
$stmt = $pdo->prepare($sql);
$stmt->execute();
// $stmt->execute(array(
// $_POST['ModuleID']
// ));
// $result = $stmt->fetch();
$result = $stmt->fetchAll();
foreach ($result as $row)
{
echo "<TR>";
// echo $row[0];
foreach ($row as $col) {
// for ($i = 0; $i < 5; $i++) {
echo "<TD>";
// echo $row[$i];
echo $col;
echo "</TD>";
}
echo "</TR>";
}
所以我的问题是,当我尝试手动对行值进行迭代(您可以看到在哪里尝试了for($ i = 0; $ i <5; $ i ++))时,我不知道如何来获取列数,因此只打印出5。当我切换为使用foreach($ row as $ col)时,我可以看到所有数据,但是每列都会在此之后立即生成重复项。
因此,我正在寻找一种以编程方式在结果集中查找列长的方法,或者寻找一种方法来使用我的foreach解决方案(仅生成1列)
答案 0 :(得分:1)
因为PDO返回这样的数组:
[0] => Array
(
[name] => apple
[0] => apple
[colour] => red
[1] => red
)
然后,当您循环所有行时,将得到索引和关联的结果。
http://php.net/manual/en/pdostatement.fetchall.php
尝试$result = $stmt->fetchAll(PDO::FETCH_ASSOC);