1

我正在尝试使用 PDO 进行数据库连接。不知何故,我得到了这个错误..或注意到,但我不知道为什么,它不输出名称......

注意:第 31 行 (location) 中的数组到字符串转换,即

     (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";

问候,梅林

4

1 回答 1

5

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现在是一维数组。这可能是你想要的。

于 2013-02-08T16:44:15.600 回答