繁体   English   中英

未定义的变量是实际定义的吗?

[英]Undefined Variable Is Actually Defined?

我正在努力获取一个简单的注册/登录表格。 我目前在访问数据库连接时遇到问题。 我不断收到“未定义的变量”。

这是我的连接代码:

<?php

$hostName = 'localhost';
$userName = 'root';
$userPass = '';
$database = 'test';

$con = new mysqli($hostName, $userName, $userPass, $database);

if($con->connect_errno){
    printf("Connect failed...");
    exit();
}

通过将其包含在我的php文件中,我是否应该无法访问$ con? 还是每次访问文件都必须重新定义连接?

根据我的经验,我不必重新定义它,因此我对此表示怀疑。 这是使它跳闸的功能。

<?php

include 'user-functions.php';
include 'connect.php';

function checkDuplicateEmail($email){
    $query = "SELECT `playerEmail` FROM `players` WHERE `playerEmail` = '$email'";

    $result = $con->query($query);

    if($result->num_rows > 1){
        addError("Duplicate email: " . $email);
        return True;
    }
    return False;
}

function checkDuplicateUserName($userName){
    $query = "SELECT `playerName` FROM `players` WHERE `playerName` = '$userName'";

    $result = $con->query($query);

    if($result->num_rows > 1){
        addError("Duplicate username: " . $userName);
        return True;
    }
    return False;
}

?>

现在,这是$ con唯一表示“未定义变量”的位置。 我想念什么吗?

这是网页中的两个错误:

  1. 未定义的变量:con
  2. 在非对象上调用成员函数query()。

$con在全局范围内,不能用于您的函数。 您需要将其作为参数传递给函数中的代码才能访问它:

function checkDuplicateEmail($email, $con){
    $query = "SELECT `playerEmail` FROM `players` WHERE `playerEmail` = '$email'";

    $result = $con->query($query);

    if($result->num_rows > 1){
        addError("Duplicate email: " . $email);
        return True;
    }
    return False;
}

$var = checkDuplicateEmail($email, $con);

您也可以使用global关键字,但这是一种不好的做法,因此在此不推荐使用。

这是一个范围界定问题。 $con定义为全局变量,或将其作为参数传递给需要它的每个函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM