我正在尝试使用php PDO从数据库中选择记录,但收到的错误为“SQLSTATE [3D000]:无效的目录名称:1046未选择数据库”。 我发现了一些类似的可用解决方案,但不幸的是这些解决了我的问题。
这是我的代码
class Database {
private $servername = "127.0.0.1";
private $username = "root";
private $password = "";
private $dbname = 'demo';
protected static $con = null;
function __construct() {
try {
self::$con = new PDO( "mysql:host = $this->servername;dbname = $this->dbname", $this->username, $this->password );
self::$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = self::$con->prepare("select * from test");
$stmt->execute();
while($row = $stmt->fetch()){
print_r($row);
}
} catch( PDOException $e ) {
echo "Connection failed: " . $e->getMessage();
die;
}
}
}
当我执行上面的代码时,我收到了上述错误。 谁能告诉我,我错过了什么?
答案 0 :(得分:1)
在您的连接字符串中执行以下操作:
self::$con = new PDO( "mysql:host={$this->servername};dbname={$this->dbname}", $this->username, $this->password );
它将帮助php正确解析变量。
或者使用连接:
self::$con = new PDO( "mysql:host=" . $this->servername . ";dbname=" . $this->dbname, $this->username, $this->password );
如手册所示 - 我删除了dsn中的所有空格。