我有一个连接类,应该为我连接到数据库,但它无法正常工作。
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
答案 0 :(得分:2)
通过__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");
答案 1 :(得分:0)
将__connection更改为__construct