我可以';在我的PDO数据库中没有计数结果


I can't count results in my database with PDO

我有这个错误显示:注意:未定义的变量:第4行中D:''examplep''htdocs''website''core''functions''users.php中的conn

致命错误:在第4行的D:''examplep''htdocs''website''core''functions''users.php中的null处调用成员函数query()

这是连接数据库

connect.php

<?php 
$servername = "localhost";
$user = "root";
$passwd = "";
$dbname = "userdata";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $user, $passwd);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $exc) {
die($exc->getMessage());
}
?>

在这部分我有的问题

users.php

    <?php 
    function user_exists($username){
        $sql ="SELECT COUNT('id') FROM users where username = '$username'";
        $query = $conn->query($sql);
        $result = $query->fetchAll(PDO::FETCH_ASSOC);
        if(count($result)){
            $res = 0;
        }else {
            $res = 1;
        }
        return $res;
    }
    ?>

这就是我将users.php与connect.php 连接起来的地方

init.php

    <?php
    session_start();
    require 'database/connect.php';
    require 'functions/users.php';
    require 'functions/general.php';
    $errors = array();
    ?>

这是一个可变范围的问题。

因为$conn是在函数外部设置/声明的,所以在函数的内部不能访问它。

修改您的功能如下:

function user_exists($username){
    // This gets you access to the $conn variable inside the function.
    global $conn;
    $sql ="SELECT COUNT('id') FROM users where username = '$username'";
    $query = $conn->query($sql);
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    if(count($result)){
        $res = 0;
    }else {
        $res = 1;
    }
    return $res;
}