php - 查询失败:SQLSTATE [3D000]:目录名无效:1046 未选择数据库
问题描述
dbConn.php
<?php
function getConnection()
{
try {
$connection = new PDO("mysql:host=localhost;*****=username", "*****", "*****");
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $connection;
} catch (Exception $e) {
throw new Exception("Connection error " . $e->getMessage(), 0, $e);
}
}
?>
管理页面:
<?php
try {
require_once("dbconn.php");
$dbConn = getConnection();
$sqlQuery = "SELECT eventID, eventTitle, eventDescription, NE_events.venueID, venueName, location, NE_events.catID, catDesc, eventStartDate, eventEndDate, eventPrice
FROM NE_events
INNER JOIN NE_category
ON NE_category.catID = NE_events.catID
INNER JOIN NE_venue
ON NE_venue.venueID = NE_events.venueID
ORDER BY eventTitle";
$queryResult = $dbConn->query($sqlQuery);
while ($rowObj = $queryResult->fetchObject()) {
echo "<div class='event'>\n
<span class='eventTitle'>{$rowObj->eventTitle}</span>\n
<span class='categoryName'>{$rowObj->catDesc}</span>\n
<span class='venue'>{$rowObj->venueName}</span>\n
<span class='startDate'>($rowObj->eventStartDate)</span>\n
<span class='endDate'>($rowObj->eventEndDate)</span>\n
<span class='price'>($rowObj->eventPrice)</span>
</div>\n";
}
} catch (Exception $e) {
echo "<p>Query failed: " . $e->getMessage() . "</p>\n";
}
?>
我正在尝试从 MySQL 数据库中检索数据,但由于某种原因,我收到一条错误消息:
查询失败:SQLSTATE [3D000]:目录名称无效:1046 未选择数据库。
解决方案
正如 Nigel Ren 提到的,您应该在 DSN 字符串(PDO 构造函数的第一个参数)中指定数据库名称。
$connection = new PDO("mysql:host=localhost;dbname=yourDbName", "login", "password");
您得到的错误清楚地表明您没有选择数据库。