【问题标题】:WHERE Query gives "Invalid argument supplied for foreach()"WHERE 查询给出“为 foreach() 提供的参数无效”
【发布时间】:2015-04-17 16:35:24
【问题描述】:
  try
   {
      $db = new PDO('mysql:host=localhost;dbname=wba', 'root', '');
   }
   catch(PDOException $e)
   {
      echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
   }
   $db->exec("set names utf8");
   $stmt = $db->query("SELECT * FROM atrakcje WHERE `akceptacja` !=1 ORDER BY ID DESC");


      foreach($stmt as $row)
      {
        echo "<div class='pure-u-1' style='background:#ecf0f1; border:0px; margin-bottom:20px;'>";
        echo "<h2>".$row['tytul']."</h3>";
        echo "<h3>Blok: ".$row['blok']."</h2>";
        echo "<p style='padding:15px;'>".$row['opis']."<br><br><i style='float:right; padding-right:10px;'>".$row['imienazwisko']." \"".$row['ksywka']."\"</i></p>";
        echo "</div>";
      }
      $stmt->closeCursor();

我使用这样的代码。我得到了

为 foreach() 提供的参数无效

在第 31 行 foreach($stmt as $row)

【问题讨论】:

  • $stmt 将是一个结果对象,而不是一个数组。需要做一个 WHILE 循环。 php.net/manual/en/pdo.query.php
  • 您的查询似乎失败了,$stmtfalse 而不是 PDOStatement 对象。您应该通过添加/启用错误处理来检查失败的原因。
  • 我注意到并更新了我的链接。
  • @Twisty 在同一页面中:A nice feature of PDO::query() is that it enables you to iterate over the rowset returned by a successfully executed SELECT statement.
  • 也可以让PDO抛出异常。打开连接后输入:$db-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

标签: php mysql pdo


【解决方案1】:

感谢 cmets。我发现我的错误是数据库中的拼写错误。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2011-02-07
    相关资源
    最近更新 更多