使用 XAMPP 和 Workbench 的带有 PDO 的 PHP [重复]
Posted
技术标签:
【中文标题】使用 XAMPP 和 Workbench 的带有 PDO 的 PHP [重复]【英文标题】:PHP with PDO using XAMPP and Workbench [duplicate] 【发布时间】:2018-01-07 12:35:27 【问题描述】:我是 php 的初学者,我正在尝试使用 PDO 将我的应用程序与数据库连接起来。
$dbName = "new_schema";
$this->db = new PDO("mysql:host=localhost;dbname=$dbName", "root", "");
当我尝试运行我的应用程序时,这是浏览器的输出:
Fatal error: in C:\xampp\htdocs\Project\application\model-database.class.php on line 10
第 10 行是这样的:
$this->db = new PDO("mysql:host=localhost;dbname=$dbName", "root", "");
在 Workbench 中,Hostname 设置为 localhost,端口 3308 和用户名 root。没有密码。连接名称是本地实例mysqlweb。
在 Xampp 中,Mysql 在端口 3308 上运行。
非常感谢您的帮助。 :)
编辑:
This is the browser output
现在,错误是找不到驱动程序。
【问题讨论】:
您遇到的致命错误是什么? 信息不足 MySQL 默认端口是 3306。如果你使用另一个,你必须在你的 dns 字符串中定义它。 谢谢。如何定义这个 DNS 字符串? 这是你的DSN (Data Source Name):mysql:host=localhost;dbname=$dbName
。添加;port=3308
。
【参考方案1】:
试试下面的代码:
$host = '127.0.0.1'; //or localhost
$database = 'mysql';
$port = 3306;
$user = 'root';
$password = '';
try
$this->connection = new PDO($database . ":host=" . $host . ';port=' . $port, $user, $password);
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $this->connection;
catch (PDOException $e)
echo $e->getMessage();
【讨论】:
【参考方案2】:您是否启用了 PHP.INI 文件中的驱动程序?
在您的 PHP.INI 中搜索 extension=php_pdo.dll
和 extension=php_pdo_mysql.dll
并删除它们前面的 ;
。保存文件并重新启动 XAMPP 服务器。
编辑
我没有机会亲自运行它,而不是今天在我的开发机器上运行,但您可以尝试在新脚本中运行此代码,看看是否能获得有关错误的更多详细信息。我已将其设置为抛出和捕获错误,以及转储phpinfo()
页面以查看是否启用了 PDO 并显示了 MySQL 驱动程序。
<?php
class DBTest
private $dbname;
private $host;
private $port;
private $username;
private $password;
private $driver;
private $db;
public __construct($username, $password, $dbname = "", $host = "127.0.0.1", $port = 3306, $driver = "mysql")
$this->username = $username;
$this->password = $password;
$this->dbname = $dbname;
$this->host = $host;
$this->port = $port;
$this->driver = $driver;
private function getDSN()
return sprintf("%s:host=%s;dbname=%s;port=%d", $this->driver, $this->host, $this->dbname, $this->port);
private function connect()
try
$this->db = new PDO($this->getDSN(), $this->username, $this->password);
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
catch (PDOException $e)
print "Error!: " . $e->getMessage() . "<br/>";
return false;
return true;
public function getRealised()
if($this->db == null)
return false;
$sql = "SELECT * FROM realised";
try
$query = $this->db->prepare($sql);
$query->execute();
while($row = $query->fetch(PDO::FETCH_ASSOC))
print_r($row);
catch(PDO_Exception $e)
print "Error!: " . $e->getMessage() . "<br/>";
return false;
return true;
$dbtest = new DBTest("root", "", "new_schema", "127.0.0.1", 3308, "mysql");
print("Created object");
if($dbtest->connect())
echo "Connected to DB";
if($dbtest->getRealised())
echo "Database queried";
phpinfo();
【讨论】:
感谢您的帮助。extension=php_pdo_mysql.dll
已经存在,前面没有 ;
。我添加了extension=php_pdo.dll
并重新启动了 XAMPP。但是找不到驱动程序的错误依然存在。
嗯...您的路径可能有问题。检查此答案以查看是否有帮助:***.com/questions/25948767/…
扩展目录的路径是正确的(并且设置为绝对路径)。这两个扩展都在这个目录中。
@JennyG。添加了一些代码以尝试获取有关错误的更多信息。以上是关于使用 XAMPP 和 Workbench 的带有 PDO 的 PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 INSERT 语句的 MySQL Workbench 导出数据库
MySQL Workbench "fetching..." -- 无法浏览数据库