Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用foreach访问SELECT查询结果时出现问题_Php_Mysql_Pdo - Fatal编程技术网

在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>';
    }
 }