PHP数据库连接回声令人困惑的以下代码

时间:2019-03-28 06:06:34

标签: php mysqli

在我的php中,我从其他php调用数据库连接,但是在这里我感到困惑,它没有回显当前的php echo

这是我的db.php代码

<?php
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
// error_reporting(E_ALL);
class Database {
    private $con;
    public function connect (){
        include_once("constant.php");
        $this->con = new Mysqli(HOST,USER,PASS,DB);
        if ($this->con->connect_error) {
            echo"connect fails";
            //return $this->con;    
        }else{echo "connection success";}
        //return "DATABASE_CONNECTION_FAIL";

    }
}
$db = new Database();
$db->connect();
?>

这是我的user.php代码

<?php
/**
 * user class for account creation and login purpose
 */
class User {
    private $con;
    function __construct(){

        include_once("../database/db.php");  
        $db = new Database();
        $this->con = $db->connect();
        if($this->con) {
        echo "connect databases";
      }
    }


}
$obj = new User();
?>

在我的浏览器中,我打电话给user.php,但是我得到了connection success connection success的回声,它重复了2次,但是在user.php中却没有显示

我期望的回声是connect databases

enter image description here

2 个答案:

答案 0 :(得分:0)

连接成功后。您应该返回连接。

在db.php代码下面尝试

<?php
// ini_set('display_errors', 1);
// ini_set('display_startup_errors', 1);
// error_reporting(E_ALL);
class Database {

  private $con;

  public function connect() {
    include_once("constant.php");
    $this->con = new Mysqli(HOST, USER, PASS, DB);
    if ($this->con->connect_error) {
      echo"connect fails";
    }
    else {
      // return successful connection
      return $this->con;
    }
  }

}

$db = new Database();
$db->connect();
?>

答案 1 :(得分:0)

user.php 中的此行调用 Database 类中的 connect()函数。这也会回显第一个“连接成功” 字符串:

$this->con = $db->connect();

user.php 中的这一行再次调用 Database 类中的 connect()函数,并打印第二个 “连接成功” 字符串。

if($this->con) { ... }

user.php 中的这些行不起作用,因为 connect()函数不返回任何内容:

if($this->con) {
  echo "connect databases";
}

如果只需要“连接数据库” return 语句在 Database 类if-else块中替换回显。 >字符串结果:

if ($this->con->connect_error) {
  return false;
} else {
  return true;
}