所以最近我一直在尝试使用更多程序性的mysqli进行练习,并一直在寻找http://www.phpknowhow.com/mysql/mysqli-procedural-functions/,以及w3schools作为参考,但我仍然遇到麻烦,所以我想我和我#39;请问。
我有这个database.php文件,其中有很多东西,但重要的东西是
class Database{
public $host = DB_HOST;
public $username = DB_USER;
public $password = DB_PASS;
public $db_name = DB_NAME;
public $link;
public $error;
public function __construct(){
$this -> connect();
}
private function connect(){
$link = mysqli_connect($this->host,$this->username,$this->password,$this->db_name);
if(!$link){
echo "Failed".mysqli_error($link);
}
}
// create select method
public function select($query){
$result = mysqli_query($link,$query) or die("didnt work".mysqli_error($link));
if(mysqli_num_rows($result) > 0){
return $result;
}
else{
return false;
}
}
现在,我的index.php文件中的当前工作方式很简单,只需执行类似
的操作$db = new Database();
//CREATe query
$query = "SELECT * FROM posts";
$posts = $db->select($query);
有没有办法用程序函数实现$posts = $db->select($query)
?在我完成mysqli_query($link,$query)
之类的内容之前,link
在这里和课堂内都是公开的,所以我不能这样做,而且我想访问函数select
。谢谢!
答案 0 :(得分:2)
$link
中未定义 select
。
修改您的connect
功能:
private function connect() {
$this->link = mysqli_connect($this->host, $this->username, $this->password, $this->db_name);
if(!$this->link) {
echo "Failed: " . mysqli_error($this->link);
}
}
现在,您可以在select
功能中使用$ this->链接:
public function select($query){
$result = mysqli_query($this->link, $query) or die("didn't work: " .mysqli_error($this->link));
if(mysqli_num_rows($result) > 0) {
return $result;
}
else{
return false;
}
}
我建议你阅读PHP OOP documenentation(至少在前几章)以便更好地理解。