有人可以指导我在 PHP 中使用 MySQLi 扩展的正确方法吗?我以前一直使用过程式 MySQL 函数,想要进行更改,但发现 PHP.net 和其他网站上的示例太复杂。似乎有多种方法可以完成同一件事。我想通过以下方法使用它:
function checkCredentials($username, $password)
{
$q = $db->prepare("SELECT id FROM `users` WHERE username=? AND password=? LIMIT 1");
$q->bind_param('ss', $username, $password);
$q->execute();
}
这就是我所了解的 PHP.net 示例,但我收到此错误:
Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\classes\user.class.php on line 14
($db
变量是我的用户类中的句柄,工作正常)
对于以前从未使用过该意图的人以及对类和 OOP 不太熟悉的人来说,文档似乎太复杂了。
是否有人有解释如何连接/准备语句/执行查询和所有内容的页面链接,或者可以将其放在答案中?
谢谢。
最佳答案
问题是 $db
不在范围内(因此它被初始化为 null
)。如果您向 E_ALL
发送 error_reporting,您会看到有关尝试使用未初始化变量 $db
的通知...您需要以某种方式引入 $db
code> 进入函数范围:
如果它是全局变量:
function checkCredentials($username, $password) {
global $db;
如果它是一个成员变量(并且该函数实际上是对象中的一个方法):
function checkCredentials($username, $password) {
$q = $this->db->prepare();
如果是其他内容,您可能需要将其传入:
function checkCredentials($username, $password, $db) {
关于php - MySQLi 的正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601621/