gpt4 book ai didi

php - PDO 连接到数据库问题

转载 作者:可可西里 更新时间:2023-11-01 06:40:02 28 4
gpt4 key购买 nike

我需要知道我写的 PDO 扩展在句法和语义上是否有效。我一直在使用 var_dumping() 我的连接变量,当变量被传递给构造函数(具有正确的值)时,我实际上无法从我的数据库中获取任何内容。

我研究了 PHP 手册中的 PDO 类,从中发现我正在使用的类与 wiki 页面示例部分中给出的扩展类几乎相同。

这是我的代码:

class DBConnector extends PDO
{
private $host;
private $username;
private $password;
private $db;
private $dns;

public function __construct($host, $username, $password, $db)
{
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->db = $db;

$this->dns = "mysql:dbname=".$this->db.";host=".$host;
$connection = parent::__construct($this->dns, $this->username, $this->password);

}
}

这里是一个测试查询,它返回一个数组……里面什么都没有。数据库中有数据,显然有些地方不正确。

function testQuery()
{
global $connection;

$query = "
SELECT * FROM users
";

$stmt = $connection->prepare($query);

$result = $stmt->fetchAll();


}

我做错了什么吗?

最佳答案

试试这个:

class DBConnector extends PDO
{
private $connection;
private $host;
private $username;
private $password;
private $db;
private $dns;

public function __construct($host, $username, $password, $db)
{
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->db = $db;
$this->dns = "mysql:dbname=".$this->db.";host=".$host;
$this->connection = parent::__construct($this->dns, $this->username, $this->password);
$this->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

public function testQuery()
{
$query = "SELECT * FROM a";
$stmt = $this->prepare($query);
if($stmt->execute()){
return $stmt->fetchAll();
}
return array();
}
}

$tg = new DBConnector('localhost', 'root', '', 'test');
$t = $tg->testQuery();
print_r($t);

$connection 是 DBConnector::__construct 的本地连接,我在那里看不到任何全局连接。所以它不会存在于你的 testQuery 函数中。通过将您的函数移动到类中,并创建一个连接属性,可以很容易地使用它。

关于php - PDO 连接到数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7464960/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com