未捕获的 PDOException:在 PDOStatement 对象上使用 fetchAll() 时的 SQLSTATE[HY000]
Uncaught PDOException: SQLSTATE[HY000] when using fetchAll() on PDOStatement object
嘿,我正在学习如何使用 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));
?>
任何积极的意见将不胜感激,谢谢。
您应该一次对一个 SQL 语句使用 query 和 exec:
$db->exec("USE mydatab");
$results = $db->query("SELECT name, price, img FROM products ORDER BY sku asc");
可以 do otherwise,但有一些注意事项。一般来说,您可能有多个结果集,您需要指明要检索哪些结果集。如果您只拨打单独的电话,生活会简单得多。
Side-note:可以在连接字符串中指定UTF-8字符集,像这样:
$db = new PDO("mysql: host=localhost; dbname=tutorialdb; charset=UTF8",
"root", "");
那么你就不需要这个了:
$db->exec("SET NAMES 'utf8'");
嘿,我正在学习如何使用 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));
?>
任何积极的意见将不胜感激,谢谢。
您应该一次对一个 SQL 语句使用 query 和 exec:
$db->exec("USE mydatab");
$results = $db->query("SELECT name, price, img FROM products ORDER BY sku asc");
可以 do otherwise,但有一些注意事项。一般来说,您可能有多个结果集,您需要指明要检索哪些结果集。如果您只拨打单独的电话,生活会简单得多。
Side-note:可以在连接字符串中指定UTF-8字符集,像这样:
$db = new PDO("mysql: host=localhost; dbname=tutorialdb; charset=UTF8",
"root", "");
那么你就不需要这个了:
$db->exec("SET NAMES 'utf8'");