注意:PDO数据库连接上的数组到字符串转换

时间:2013-02-08 16:41:27

标签: php mysql arrays pdo

我正在尝试PDO进行数据库连接。不知怎的,我得到这个错误..或通知但我不知道为什么,它不输出名称...

注意:第31行(位置)中的数组转换为字符串,即

     (print $row[0] . "\t";)

我不知道为什么?

完整代码:

         $query = "SELECT naam FROM paginas"; 


    try 
    { 
        $stmt = $db->prepare($query); 
        $result = $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
        die("Failed to run query: " . $ex->getMessage()); 
    } 

    $row = $stmt->fetchALL(); 

     print $row[0] . "\t";

问候, Merijn

1 个答案:

答案 0 :(得分:4)

PDO::fetchAll()会返回记录数组,其中记录的类型取决于您使用的提取样式。

由于您使用的是PDO的默认提取样式PDO::FETCH_BOTH PDO::fetchAll()将返回一个数组数组。在你的情况下,它看起来像:

array(2) {
  [0] =>
  array(2) {
    [0] =>
    string(3) "foo"
    'naam' =>
    string(3) "foo"
  }
  [1] =>
  array(2) {
    [0] =>
    string(3) "bar"
    'naam' =>
    string(3) "bar"
  }

  ...
}

所以$ row [0]是一个数组。你必须解决它的索引。正如您在上面发布的示例数组中所见,您可以使用:

print $row[0]['naam'] . "\t";

print $row[0][0] . "\t";

更新:如果您想循环浏览记录而不是一次性提取所有记录,请使用PDOStatement::fetch()。像这样:

while($row = $stmt->fetch()) {
    print $row['naam'] . "\t";
}

请注意,$row现在是一维数组。这可能就是你想要的。