【问题标题】:how to use a variable outside a function如何在函数外使用变量
【发布时间】:2014-02-05 06:24:40
【问题描述】:

我有一个名为 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 作为函数的参数传递。

标签: php function variables mysqli


【解决方案1】:

将 $db 作为全局调用

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

【讨论】:

  • 它也可以,但我认为@Satish 的答案要好得多。无论如何谢谢:D
【解决方案2】:

你可以像这样在函数中使用$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();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-21
    • 2023-01-19
    • 2012-11-05
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多