mysqli连接无法正常工作

时间:2015-12-06 17:35:51

标签: php mysql mysqli database-connection

我有一个连接类,应该为我连接到数据库,但它无法正常工作。

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

2 个答案:

答案 0 :(得分:2)

通过__construct函数定义的类构造函数。

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

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

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

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

<强>更新

如果您将某些值定义为常量,正如您所说:

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");

答案 1 :(得分:0)

将__connection更改为__construct