【问题标题】:mysqli connection not workingmysqli连接不工作
【发布时间】:2016-03-11 06:47:56
【问题描述】:

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

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 中的用户名

【问题讨论】:

    标签: php mysql mysqli database-connection


    【解决方案1】:

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

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

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

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

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

    更新:

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

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

    【讨论】:

    • 我将 config.php 文件更改为 但我仍然得到未定义的变量错误
    • 当我运行 index.php 时。我只是如上所述更改了config.php文件,并将connection.php文件中的__connection更改为__construct。
    • 什么变量未定义?
    • 所有在 config.php 文件中声明为常量(如您所建议)的变量,例如 server_name、database_name、user_name、password。
    【解决方案2】:

    将 __connection 更改为 __construct

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2014-03-29
      • 2016-03-14
      相关资源
      最近更新 更多