【问题标题】:Uncaught PDOException: SQLSTATE[HY000] when using fetchAll() on PDOStatement object未捕获的 PDOException:在 PDOStatement 对象上使用 fetchAll() 时的 SQLSTATE[HY000]
【发布时间】:2016-01-23 08:07:41
【问题描述】:

您好,我正在学习如何使用 PHP,并且已按照我正在观看的教程中的所有内容进行操作,但我不明白为什么会出现错误。这是我的代码:

<?php

  try {
    $db = new PDO("mysql: host = localhost; dbname = tutorialdb", "root", "");
    $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $db->exec("SET NAMES 'utf8'");
  } catch(Exception $e) {
    echo "Could not connect to database.";
    exit;
  }


  try {
    $results = $db->query("USE mydatab; SELECT name, price, img FROM products ORDER BY sku asc");
  } catch (Exception $e) {
    echo "Could not retrieve data.";
    exit;
  }

  echo "<pre>"
  var_dump($results->fetchAll(PDO::FETCH_ASSOC));

?>

任何积极的意见将不胜感激,谢谢。

【问题讨论】:

  • SQLSTATE[HY000]的错误码?
  • 尝试删除 USE mydatab; 并在 try/catch 块中添加 var_dump($results-&gt;fetchAll(PDO::FETCH_ASSOC));

标签: php mysql xampp


【解决方案1】:

您应该一次对一条 SQL 语句使用 queryexec

$db->exec("USE mydatab");
$results = $db->query("SELECT name, price, img FROM products ORDER BY sku asc");

可以do otherwise,但有一些注意事项。一般来说,您可能有多个结果集,并且您需要指出您要检索的结果集。如果您只打单独的电话,生活会简单得多。

旁注:您可以在连接字符串中指定 UTF-8 字符集,如下所示:

 $db = new PDO("mysql: host=localhost; dbname=tutorialdb; charset=UTF8",
               "root", "");

那么你就不需要这个了:

 $db->exec("SET NAMES 'utf8'");

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2012-07-08
    • 2021-07-25
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2015-11-18
    相关资源
    最近更新 更多