1 回答

TA貢獻1812條經驗 獲得超5個贊
我發現您課堂上的不同方法非常多余。他們都做同樣的事情,而只是名稱不同。所以首先讓我們刪除除一個方法之外的所有方法。我也會從課堂上刪除一些其他貨物崇拜代碼。
然后您將需要重寫您的連接代碼以添加錯誤報告和字符集支持。也添加define('DB_CHARSET', 'utf8mb4');到您的配置文件中。
然后你必須重寫這個類中剩下的唯一方法,以添加對準備好的語句的支持。有關詳細信息,請參閱我的文章Mysqli 輔助函數。
Class Database {
public $link;
public function __construct() {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$this->link = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
mysqli_set_charset($this->link, DB_CHARSET);
} catch (\mysqli_sql_exception $e) {
throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
}
}
public function query($sql, $params = [], $types = "")
{
if ($params) {
$types = $types ?: str_repeat("s", count($params));
$stmt = $this->link->prepare($sql);
$stmt->bind_param($types, ...$params);
$stmt->execute();
return $stmt->get_result();
} else {
return $this->link->query($sql);
}
}
}
現在,您可以使用準備好的語句將您的類與任何類型的查詢一起使用
$query = "INSERT INTO users(name) VALUES(?)";
$this->db->query($query, [$data['name']]);
header("Location: index.php");
$query = "SELECT * FROM users WHERE user_id = ?";
$result = $this->db->query($query, [$user_id]);
$value = $result->fetch_assoc();
$name = $value['name'];
$this->db->query("DELETE FROM users WHERE user_id = ?",[$dlt_user]);
header("location: rd-user.php");
$query = "UPDATE users SET name = ? WHERE user_id = ?";
$this->db->query($query,[$name,$userid]);
header("Location: index.php");
- 1 回答
- 0 關注
- 157 瀏覽
添加回答
舉報