在PHP中使用foreach访问SELECT查询结果时出现问题
我有一个名为在PHP中使用foreach访问SELECT查询结果时出现问题,php,mysql,pdo,Php,Mysql,Pdo,我有一个名为people的简单表,其中包含三个字段。最后,我希望使用SELECT查询的结果来填充表单的默认值,但现在我只是尝试回显查询的结果。我尝试了很多方法,现在我在第11行遇到了一个“数组到字符串的转换”错误(echo)。以下是我正在尝试的: <?php include 'connect_db.php'; $stmt = $conn->query("SELECT * FROM people"); $results = $stmt->fetchAll(PDO::FETC
people
的简单表,其中包含三个字段。最后,我希望使用SELECT查询的结果来填充表单的默认值,但现在我只是尝试回显查询的结果。我尝试了很多方法,现在我在第11行遇到了一个“数组到字符串的转换”错误(echo
)。以下是我正在尝试的:
<?php
include 'connect_db.php';
$stmt = $conn->query("SELECT * FROM people");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $key => $value) {
echo $key . ':' . $value . '<br>';
}
?>
我做错了什么?您的问题很清楚,您无法显示数组,这意味着您可以尝试使用json_encode($value) 或
您可以使用print\r($value)not echo您将为每一行返回一个关联数组。这些键将是列名
include 'connect_db.php';
$stmt = $conn->query("SELECT * FROM people");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
echo $row['some_column_name'] . '<br>';
}
包括“connect_db.php”;
$stmt=$conn->query(“从人中选择*);
$results=$stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($结果为$行){
echo$row['some_column_name']。
;
}
或
包括“connect_db.php”;
$stmt=$conn->query(“从人中选择*);
$results=$stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($结果为$行){
foreach($key=>$value的行){
回显$key.,'.$value.'
';
}
}
您正在迭代行,其中$key
只是索引号,$value
是表示数据库行的数组。不能像那样回显数组。在$value上嵌套另一个foreach。在side foreach循环中使用print\r($value)。然后你就可以理解这个数组是如何工作的了。好吧,这稍微澄清了一些事情。我得到:Array([first\u name]=>Bob[last\u name]=>Smith[name\u id]=>2)1
。(旁白——最后的1
是什么?)。我是否需要具体地按名称引用每一列?这可能是最接近的问题,但实际问题是迭代了错误的内容。是的,这样我们就可以看到$value发生了什么,所以他可以使用正确的值,或者你可以用另一种方式告诉我吗?这是否意味着我需要重复echo$row['some_column_name'].
';
对于每一列?刚刚更新了答案。但是,是的,您需要显式访问每一列,或者通过在单个行上再次循环访问每一列。
include 'connect_db.php';
$stmt = $conn->query("SELECT * FROM people");
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $row) {
foreach ($row as $key => $value){
echo $key . ', ' . $value . '<br>';
}
}