我正在努力获得一个简单的注册/登录表单。我目前在访问与数据库的连接时遇到问题。我不断得到一个“未定义的变量”。
以下是我的连接代码:
<?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说“Undefined Variable”的位置。我错过了什么吗?
以下是网页上的两个错误:
答案 0 :(得分:6)
$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
关键字,但这是不好的做法,因此我不会在此推荐。
答案 1 :(得分:3)
这是一个范围问题。将$con
定义为全局或将其作为参数传递给需要它的每个函数。