【解決方法】Php 未定義変数 $conn

プログラミングQA


やあ、

私はPHPのマスターではありませんが、ログインフォームを作成しようとしていますが、次のエラーメッセージが表示されます:

Warning: Undefined variable $conn in C:\xampp\htdocs\BeravaPhp\phpfiles\login_ini.php on line 10

Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\BeravaPhp\phpfiles\login_ini.php:10 Stack trace: #0 {main} thrown in C:\xampp\htdocs\BeravaPhp\phpfiles\login_ini.php on line 10

login_ini.php のコードは次のとおりです。

PHP
<pre><?php
include "dbconn.php";

if (isset($_POST['submit'])) {
    try {
        $cuid = $_POST['username'];
        $cpass = $_POST['password'];

        // Check if username exists in Clients table
        $stmt = $conn->prepare("SELECT * FROM Clients WHERE CUID = :cuid");
        $stmt->execute(array(':cuid' => $cuid));
        $result = $stmt->fetch();

        if ($result) {
            if (password_verify($cpass, $result['CPass'])) {
                header("Location: dashboard.html");
                exit;
            } else {
                echo "Invalid password";
            }
        } else {
            // Check if username exists in SubUser table
            $stmt = $conn->prepare("SELECT * FROM SubUser WHERE SubUsrID = :cuid");
            $stmt->execute(array(':cuid' => $cuid));
            $result = $stmt->fetch();

            if ($result) {
                if (password_verify($cpass, $result['SubUsrPass1'])) {
                    header("Location: dashboard-Sub.html");
                    exit;
                } else {
                    echo "Invalid password";
                }
            } else {
                // Check if username exists in BervEmp table
                $stmt = $conn->prepare("SELECT * FROM BervEmp WHERE BerEmpID = :cuid");
                $stmt->execute(array(':cuid' => $cuid));
                $result = $stmt->fetch();

                if ($result) {
                    if (password_verify($cpass, $result['pass'])) {
                        header("Location: empdashboard.html");
                        exit;
                    } else {
                        echo "Invalid password";
                    }
                } else {
                    echo "Invalid username";
                }
            }
        }
    } catch (PDOException $e) {
        echo "Error: " . $e->getMessage();
    }
}
?>

dbconn.php 内のコードは次のとおりです。

PHP
<pre>dsn = $dsn;
        $this->user = $user;
        $this->password = $password;
    }

    private function connect()
    {
        try {
            $this->pdo = new PDO($this->dsn, $this->user, $this->password);
        } catch (PDOException $e) {
            echo "Connection failed: " . $e->getMessage();
        }
    }

    public function getPdo()
    {
        if (!$this->pdo) {
            $this->connect();
        }
        return $this->pdo;
    }
}

$dsn = "pgsql:host=localhost;dbname=Beravaa";
$user = "postgres";
$password = "222333";

$db = new Db($dsn, $user, $password);
$pdo = $db->getPdo();

if ($pdo) {
    echo "Connected to the database successfully";
} else {
    echo "Failed to connect to the database";
}
?>

私が試したこと:

それで、誰かがエラーとは何か、それを修正する方法をアドバイスできますか?

解決策 1

エラーは自明です: 変数 $conn 存在しない。
あなたが示すコードは $conn – どの時点においても、それを宣言して値を割り当てることはありません:

PHP
$stmt = $conn->prepare("SELECT * FROM Clients WHERE CUID = :cuid");
PHP
$stmt = $conn->prepare("SELECT * FROM SubUser WHERE SubUsrID = :cuid");
PHP
$stmt = $conn->prepare("SELECT * FROM BervEmp WHERE BerEmpID = :cuid");

それらはそれへの唯一の参照です…

解決策 2

$conn 宣言されたことはありません。 $pdo関数に従って、宣言されています。

コメント

タイトルとURLをコピーしました