簡體   English   中英

如何在函數外使用變量

[英]how to use a variable outside a function

我有一個名為init.php初始化文件,我為mysqli連接聲明了一個名為$db的變量。 下面是我的代碼。

<?php
    ob_start();
    session_start();

    define('DBHOST', '127.0.0.1');
    define('DBUSER', 'root');
    define('DBPASSWORD', '');
    define('DBNAME', 'mydb');

    $db = new mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME);

    if ($db->connect_error) {
        header('Location: 404.php');
    }

    require_once 'functions/User.php';
    require_once 'functions/Sanitize.php';

如您所見,我在功能文件夾中需要User.php ,在User.php文件中我有此代碼

<?php
    function login($idnumber, $username, $password) {
        $idnumber = sanitize($idnumber);
        $username = sanitize($username);
        $password = sanitize($password);

        $hashed_password = get_hashed_password($username);
    }

    function get_hashed_password($username) {
        $username = sanitize($username);

        $sql = "SELECT `password` FROM `users` WHERE `username` = ?";

        $stmt = $db->prepare($sql);

        if(!$stmt) {
            echo 'invalid sql statement';
        }

        die();
    }

在get_hashed_pa​​ssword()函數上,我使用了$db變量,但收到一條錯誤消息,提示

Notice: Undefined variable: db in D:\xampp\htdocs\sample\functions\User.php on line 15

Fatal error: Call to a member function prepare() on a non-object in D:\xampp\htdocs\sample\functions\User.php on line 15

有人可以幫我如何在任何函數中使用變量$ db嗎? 提前致謝!

調用$ db為全局

function get_hashed_password($username) {
    global $db;
    //...
}

您可以在函數內部使用$GLOBALS這樣的

$your_var = "something";
function abc()
{
    $your_var = $GLOBALS['your_var'];

}

更新2:

function get_hashed_password($username) {
        $username = sanitize($username);

        $sql = "SELECT `password` FROM `users` WHERE `username` = ?";
 $db = $GLOBALS['db'];
        $stmt = $db->prepare($sql);

        if(!$stmt) {
            echo 'invalid sql statement';
        }

        die();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM