我正在尝试创建自己的类来处理我正在制作的测试网站上的mysql交互。我不能让mysqli_connect()在类声明中工作。每次我尝试在脚本中使用该类时,都会出现此语法错误:
解析错误:第7行的C:\ xampp \ htdocs \ autoshop \ classes \ class_db.inc.php中的语法错误,意外'(',期待','或';'
这是我到目前为止的代码:
<?php
class Db{
private $host = 'localhost';
private $db_user = 'username';
private $db_pass = 'password';
private $db_name = 'dbname';
private $con = mysqli_connect($this->host, $this->db_user, $this->db_pass, $this->db_name) or die('failed to connect');
public function valid_login($login_user, $login_pass){
if(isset($login_user) && isset($login_pass) && ($login_user !== "") && ($login_pass !== "")){
include('./includes/functions.php');
$clean_lu = mysqli_real_escape_string($this->con, $login_user);
$clean_lp = mysqli_real_escape_string($this->con, $login_pass);
$login_query = "SELECT hash FROM users WHERE user_name='$clean_lu'";
$login_results = mysqli_query($this->con, $login_query) or die('bad query');
$login_hash = mysqli_fetch_array($login_results);
if(isset($login_hash[0])){
if(check_hash($clean_lp, $login_hash[0])){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
mysqli_close($this->con);
}
?>
我一直在看那条线,我找不到任何不好的语法。
我很抱歉,如果这是一个非常简单的解决方案,就在我的面前,我对整个开发人员的事情都很陌生。
答案 0 :(得分:4)
您无法使用函数调用的结果初始化对象的成员。而是在构造函数中执行此操作。
class Db
{
private $con;
public function __construct()
{
$this->con = mysqli_connect($this->host, $this->db_user, $this->db_pass, $this->db_name) or die('failed to connect');
}
...
}
此外,mysqli_close($this->con);
位于何处?它不属于任何方法。
顺便说一句,是否有任何理由手动关闭连接?
答案 1 :(得分:1)
也许试试这个
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if ($mysqli->connect_error)
{
trigger_error('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}