gpt4 book ai didi

PHP PDO 选择查询不返回任何结果

转载 作者:行者123 更新时间:2023-11-29 05:52:20 24 4
gpt4 key购买 nike

我已经在 connection.php 中创建了我的数据库连接,并将其包含在 insert.php 中。然后在构造函数中扩展类 DBConnection 类,然后创建一个函数 getData() ,我在运行文件时运行了一个选择查询,我只得到连接成功的消息。我尝试了所有可能的选项并在 stackoverflow 和其他地方搜索解决方案但失败了。

这是我的connection.php文件

<?php

class DBConnection
{

private $servername;
private $username;
private $password;
private $dbname;

private $conn;

public function __construct()
{

$this->servername = "localhost";
$this->username = "root";
$this->password = "";
$this->dbname = "pdo_test";
try {
$this->conn = new PDO("mysql:host=$this->servername;dbname=$this->dbname", $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "connected successfully";
}catch(PDOException $e){
echo "Error: " . $e->getMessage();
}
}
}
?>

我的 insert.php

<?php 
include('connection.php');

class insertData extends DBConnection
{
private $conn;

public function __construct()
{
$this->conn = new DBConnection();
}

public function getData()
{
$sql = "SELECT * FROM user";
$stmt = $this->conn->prepare($sql);
$res = $stmt->execute();
print_r($res->fetch());
}
}

$id = new insertData();
echo $id->getData();

?>

任何人都可以指出我在代码中的错误吗?提前致谢

注意:虽然与它没有任何关系,但仍然需要更多信息,我使用的是 Ubuntu 18.04

最佳答案

虽然我认为您的类层次结构不正确,但问题是在您的 insertData 类中,您有一个构造函数创建一个 DBConnection 实例并将其分配给$this->conn.因此,当您引用 $this->conn 时,您指的是 DBConnection 实例,而不是 PDO 对象。所以你调用

$stmt = $this->conn->prepare($sql);

将失败,因为 DBConnection 没有 prepare() 方法。

如果相反,您删除构造函数并将其留给基类,这将创建连接并将其分配给 $this->conn。您必须更改的一件事是 $conn 需要定义为 protected 以允许派生类访问它。

protected $conn;

还要确保当你execute()时,如果执行成功,这只会返回,结果来自fetch()

class insertData extends DBConnection
{
public function getData()
{
$sql = "SELECT * FROM user";
$stmt = $this->conn->prepare($sql);
$stmt->execute();
$res = $stmt->fetch();
print_r($res);
}
}

更新:

要检查发生了什么,您可以尝试...

ini_set('display_errors', 'On');
error_reporting(E_ALL);
$id = new insertData();
echo $id->getData();

关于PHP PDO 选择查询不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52879929/

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