gpt4 book ai didi

php - 连接到数据库时出错

转载 作者:太空宇宙 更新时间:2023-11-03 12:02:42 25 4
gpt4 key购买 nike

我正在使用 php 开发一个网络应用程序。我制作了一个我将访问的数据库类。现在在一个新文件中,我正在访问该类,但出现错误:

!) Catchable fatal error: Object of class DbMain could not be converted to string in C:\wamp\www\baapdevelopers\DBMain.php on line 23

代码

<?php
class DbMain{
private $host = 'localhost';
private $dbname = 'test';
private $username = 'root';
private $password = '';

public $con;

function __construct(){
$this->connect();
}// this is the main constructor used for initializing the database

function connect(){
try{
$this->con = new PDO("mysql:host=$this-host;dbname=$this->dbname",$this->username, $this->password);
$this->con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo 'We\'re sorry but there was an error while trying to connect to the database';
file_put_contents('connection.errors.txt', $e->getMessage().PHP_EOL,FILE_APPEND);
}
}
}
/* Test.php */

//include_once("DBMain.php");
$db = new DbMain();
?>

我不知道为什么会出现这个错误

最佳答案

在这一行中:

$this->con = new PDO("mysql:host=$this-host;dbname=$this->dbname",$this->username, $this->password);

例如,当您在字符串中使用 $this->dbname 时,它只会将 $this 视为变量,因此会尝试转换 $this (这实际上是类 DbMain 的实例)到一个字符串。这就是错误消息告诉您的内容。

相反,您应该使用花括号 ({$this->dbname}) 在字符串中转义复杂变量名称。您的代码将变为:

$this->con = new PDO("mysql:host={$this->host};dbname={$this->dbname}",$this->username, $this->password);

可以找到有关此概念的更多信息 here .

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

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