首页 > 解决方案 > 查询失败: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";
}
?>

我的 dbConn.php 文件 我的管理页面

我正在尝试从 MySQL 数据库中检索数据,但由于某种原因,我收到一条错误消息:

查询失败:SQLSTATE [3D000]:目录名称无效:1046 未选择数据库。

标签: phpmysqlsqlpdo

解决方案


正如 Nigel Ren 提到的,您应该在 DSN 字符串(PDO 构造函数的第一个参数)中指定数据库名称。

$connection = new PDO("mysql:host=localhost;dbname=yourDbName", "login", "password");

您得到的错误清楚地表明您没有选择数据库。


推荐阅读