gpt4 book ai didi

php - 为什么我的第一个 PHP 类没有按预期工作?

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:42 24 4
gpt4 key购买 nike

我正在编写我的第一个 PHP 类(class),尝试在学习过程中学习 OO 概念。这段代码的目的是将用户的 IP 和相关参数记录到数据库中,我以后可以将其用作应用临时禁令的基础。 (不,我们不讨论该策略的优点 - 请继续编码类(class)!)。这是我拥有的:

class banAss {

public function __construct(mysqli $db){
$this->db = $db;
$this->visitip = $_SERVER['REMOTE_ADDR'];
$this->visitAgent = $_SERVER['HTTP_USER_AGENT'];
$this->visitDate = time();
}

public function addBan(){
$sql = "Insert into banned (visitIP, visitAgent, visitDate,) values (?, ?, ?)";
$stmt = mysqli_prepare($this->db, $sql);
mysqli_stmt_bind_param($stmt, "ssi", $this->visitip, $this->visitAgent, $this->visitDate);
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
}

}

$banned = new banAss($db);
$banned->addBan();

值得注意的是,我确实有一个使用 mysqli 打开的有效数据库连接。我一直在玩关于此的错误消息的 whackamole。目前他们站在:

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in /home/c9/public_html/admin/login.php on line 16

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in /home/c9/public_html/admin/login.php on line 17

Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, boolean given in /home/c9/public_html/admin/login.php on line 18

我不明白这些消息。他们建议也许创建变量 $stmt 的 'mysqli_prepare' 行以某种方式搞砸了,但是如何呢?

最佳答案

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in...

仔细阅读:它告诉您您正在传递一个 bool 值,而函数并不期望它在那里。 mysqli_prepare()遇到错误时返回 bool 值 FALSE,这就是您试图传递给 mpsqli_stmt_bind_param() 函数的内容,因此 it产生一个错误和一个 bool 值 FALSE,它会逐渐下降。

使用mysqli_error()得到你得到的确切错误,并可能对如何修复所述错误有一点了解。

关于php - 为什么我的第一个 PHP 类没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370818/

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