mysqli 连接不工作

mysqli connection not working

我有一个连接 class,它应该为我连接到数据库,但它不工作。

connection.php -

<?php

    require_once "config.php";

    class connection{

        public static $db_con;

        public function __construct(){
            $this->db_con = new mysqli($server_name, $user_name, $password, $database_name);

            if($this->db_con->connect_error){
                echo "Connection falied for " . $this->db_con->connect_errno . "\n";
                return $this->db_con->connect_errno;
            }
            else{
                echo "Connection Successful";
                return $this->db_con;
            }

        }
    }
?>          

我的config.php看起来像-

<?php
    define("server_name", "localhost:8889");
    define("database_name", "myStore");
    define("user_name", "root");
    define("password", "root");
?>

在我的索引页面中,我正在尝试通过

建立数据库连接
<?php
    require_once "connection.php";

    $db = new connection();

?>

我应该看到成功消息或错误消息,但我什么也没看到。总空白页。谁能帮帮忙

我正在根据 u_mulder 的建议更新文件,这解决了一个问题,但现在又出现了另一个问题。

现在我正在吃下面的错误-

注意:未定义变量:第 10 行 connection.php 中的 server_name 未定义变量:第 10 行 connection.php 中的 user_name

Class 构造函数通过 __construct 函数定义。

在旧的php版本中构造函数也可以命名为class名称,即connection

目前你的函数__connection只是一个函数,而不是构造函数。将其重命名为构造函数或显式调用它:

$db = new connection();
$db->__connection();

此外,变量 $server_name, $user_name, $password, $database_nameconnection class 的范围内将不可用。您应该将它们作为参数传递给函数,或者将值声明为常量。

更新:

如果你把一些值定义为常量,如你所说:

define("server_name", "localhost:8080");

那么server_name是常量名,应该用而不用 $符号:

$this->db_con = new mysqli(server_name, user_name, password, database_name);

为了不将常量与变量混合,建议在 UPPER_CASE 中命名常量,例如:

define("SERVER_NAME", "localhost:8080");

将__connection更改为__construct