gpt4 book ai didi

php - 另一个类中的 MySQLi 连接

转载 作者:行者123 更新时间:2023-12-03 08:22:13 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





PHP Fatal error: Cannot redeclare class

(19 个回答)


7年前关闭。




我有这个代码:

<?php
class DBconnection extends Mysqli {
public $mysql;
public function __construct($host, $user, $pass, $db) {
$mysql = parent::__construct($host, $user, $pass, $db);
}
}

$mysql = new DBconnection('localhost', '**', '**', '**');
?>

但我无法在其他类(class)建立联系。
<?php
require_once('./mysqli.php');

class Activator {
private $key;
public $status;

public function __construct($key) {
$this->key = $key;
$this->status = array();

$this->activate();
}

private function activate() {
$query = $mysql->query("SELECT email, COUNT(email) AS founds FROM activation WHERE activationKey = '".$mysql->real_escape_string($this->key)."' LIMIT 1");

if($query) {
$query = $query->fetch_assoc();

if($query['founds'] == 0) {
$this->status['error'] = 'Deze code is verlopen of ongeldig.';
} else {
if($mysql->query("UPDATE users SET activation = '1' WHERE email = '".$mysql->real_escape_string($query['email'])."'")) {
$this->status['res'] = 'Uw account is geactiveerd!';
} else {
$this->status['error'] = 'Oeps, een fout! Neem contact op per email als dit over 5 minuten nog steeds zo is. Exuses voor het ongemak.';
}
}
} else {
$this->status['error'] = 'Oeps, een fout! Neem contact op per email als dit over 5 minuten nog steeds zo is. Exuses voor het ongemak.';
}
}
}
?>

我怎样才能让它工作?

这是错误:

Fatal error: Cannot redeclare class DBconnection in /home/raoul/domains/internetfaq.nl/public_html/dev/mysqli.php on line 6

最佳答案

您需要制作 $mysqli在类内可用。由于范围,它不可用。这可以通过将其传递给 activate() 来克服。方法作为参数:

private function activate($mysqli) {

并称:
$activator->activate($mysqli);

您不应该多次声明该类。将该类定义放在它自己的文件中,然后将该文件包含在需要它的每个页面上。

DBconnection.php
<?php
class DBconnection extends Mysqli {
public $mysql;
public function __construct($host, $user, $pass, $db) {
$mysql = parent::__construct($host, $user, $pass, $db);
}
}

文件1.php
<?php
require_once('DBconnection.php');
$mysql = new DBconnection('localhost', '**', '**', '**');
?>

文件2.php
<?php
require_once('DBconnection.php');
$mysql = new DBconnection('localhost', '**', '**', '**');
?>

有更好的方法可以做到这一点,但这会让您走上更好组织代码的道路。

关于php - 另一个类中的 MySQLi 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com