Php 用类实现mysqli过程
因此,最近我一直在尝试使用程序性更强的mysqli进行练习,并一直在研究w3schools作为参考,但我仍然有困难,所以我想我应该问一下 我有一个database.php文件,里面有很多东西,但重要的是Php 用类实现mysqli过程,php,mysqli,Php,Mysqli,因此,最近我一直在尝试使用程序性更强的mysqli进行练习,并一直在研究w3schools作为参考,但我仍然有困难,所以我想我应该问一下 我有一个database.php文件,里面有很多东西,但重要的是 class Database{ public $host = DB_HOST; public $username = DB_USER; public $password = DB_PASS; public $db_name = DB_NAME; publ
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\u查询($link,$query)
,但是link
在这里和类内部是公共的,所以我不能这样做,另外我想访问函数select
。谢谢 $link
未在函数选择中定义
修改您的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);
}
}
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;
}
}
现在,$this->link可用于select
功能:
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);
}
}
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;
}
}
我建议您阅读(至少前几章)以便更好地理解。$link
未在您的函数选择中定义
修改您的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);
}
}
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;
}
}
现在,$this->link可用于select
功能:
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);
}
}
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;
}
}
我建议您阅读(至少前几章)以便更好地理解。@Saty给出了“在不在对象上下文中时使用$this错误”如果您想要函数,为什么会有类?我只是认为将类和一些函数放在其中是组织代码的更好方法。这是我第一次在课堂上组织一切。以前它只是做一些事情,比如选择,插入,在飞行中,但这似乎是Neater,我仍然不明白你的意图和问题。如果您想使用类,那么请坚持使用类。如果你想使用一个函数,那么就放弃一个类,转而使用一个函数;可以转换成$posts=mysqli_query(这里的某物)@Saty的形式,给出了“当不在对象上下文中时使用$this错误”如果你想要一个函数,为什么会有一个类?我只是认为在里面放一个类和一些函数会是组织代码的更好方法。这是我第一次在课堂上组织一切。以前它只是做一些事情,比如选择,插入,在飞行中,但这似乎是Neater,我仍然不明白你的意图和问题。如果您想使用类,那么请坚持使用类。如果你想使用一个函数,那么就放弃一个类,转而使用一个函数;可以转换成$posts=mysqli_query(这里的某个东西)的形式。嗯,我之前实际上是在玩弄这个,并且做了同样的事情,但是当我执行“$posts=mysqli_query($this->link,$query);”$this
只能在类中使用时,我得到了错误“在不在对象上下文中使用$this”。为什么要调用mysqli_查询而不是select
函数?噢。那么,我应该只做$posts=(在这里调用函数)?$posts=$db->select(您在这里的查询)
您不必担心链接值,它存储在$db
中,当您调用选择
函数时会自动使用。这是因为我一开始说的是public$link吗?我想我需要再次学习php中的类和OOP,已经有一段时间了..嗯,其实我之前也在玩弄它,并且做了同样的事情,但是当我执行“$posts=mysqli_query($this->link,$query);”$this
只能在类中使用时,我得到了错误“在不在对象上下文中使用$this”。为什么要调用mysqli_查询而不是select
函数?噢。那么,我应该只做$posts=(在这里调用函数)?$posts=$db->select(您在这里的查询)
您不必担心链接值,它存储在$db
中,当您调用选择
函数时会自动使用。这是因为我一开始说的是public$link吗?我想我需要再次学习php中的类和OOP,已经有一段时间了。。