【问题标题】:Notice: Array to string conversion on PDO database connection注意:PDO 数据库连接上的数组到字符串转换
【发布时间】:2013-02-08 16:41:27
【问题描述】:

我正在尝试使用 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";

您好, 梅林

【问题讨论】:

  • 什么是$row[0]var_dump($row[0])

标签: php mysql arrays pdo


【解决方案1】:

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

【讨论】:

  • 谢谢!我想知道如何让它输出,只要它得到输入。像 While ($row){ print $row[this value will increase]['naam'] 之类的东西。 "\t";)
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2017-08-11
  • 2013-04-18
  • 1970-01-01
  • 2016-08-29
  • 2014-01-07
相关资源
最近更新 更多