php - 函数内的 Mysql 语句不起作用

标签 php mysql

我在一个函数中有一个 MySQL 语句,但不知何故它不起作用。我收到以下错误:

Fatal error: Call to a member function prepare() on a non-object in D:\xampp\test.php on line 7

function isloggedin($getcookiedata) {
    $data = explode("|", $getcookiedata);
    $userid = $data[0];
    $md5password = $data[1];

    $sql = "SELECT user_id, username, email, newsletter, user_group FROM users WHERE user_id = ? AND md5password = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('ss', $userid, $md5password);
    $stmt->execute();
    $stmt->bind_result($r_userid, $r_username, $r_email, $r_newsletter, $r_user_group);
    $stmt->store_result();
    $checker = $stmt->num_rows;
    $stmt->fetch();
    $stmt->close(); 
}

当我只是在函数外执行 SQL 语句时,它会起作用。但不在函数内部。

最佳答案

如果 $mysqli 是您在某处定义的全局变量,您需要将其拉入您的函数范围:

function isloggedin($getcookiedata) {
    global $mysqli;
    ...
}

参见 PHP - Variable scope

关于php - 函数内的 Mysql 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634135/

相关文章:

php - 如何使用 mysqli 解锁表

php - 显示没有图像的视频中的 Jwplayer 预览图像

mysql - SQL Like 在 "/"上崩溃

mysql - 教程 Web 应用程序的数据库设计

php - 调用未定义的方法 Gallery::newQuery() Laravel

php - 正在显示缓存的图像,任何人都可以给我解决方案

php - 为什么我的卷没有复制到其Docker容器中?

PHP strtotime 和 JavaScript Date.parse 返回不同的时间戳

php - cakephp 3.8 中的多次插入

mysql - 在没有互联网访问的情况下安装 Perl 的 mysql-dbd 模块