"Notice: Undefined variable"在PHP中。我该如何解决它?



我这里有一份注册表。我是PHP的假人(这是Android应用程序的PHP(。它有效,但我发现我可以使用相同的用户名和电子邮件注册,所以我添加了检查数据库中相同用户名的功能,并防止因为我是假人,我在尝试注册时收到此错误 -

注意:未定义的变量:con in/storage/ssd1/448/5907448/public_html/Register.php第 27 行

警告:mysqli_prepare(( 期望参数 1 为 mysqli,空值在第 27 行的/storage/ssd1/448/5907448/public_html/Register.php

警告:mysqli_stmt_bind_param(( 期望参数 1 mysqli_stmt,空值在第 28 行的/storage/ssd1/448/5907448/public_html/Register.php 中给出

警告:mysqli_stmt_execute(( 期望参数 1 mysqli_stmt,空值在第 29 行的/storage/ssd1/448/5907448/public_html/Register.php 中给出 {"成功":真}

我的 PHP 代码

<?php
$response = array();
if (!isset($_POST["username"], $_POST["email"], $_POST["password"])) {
$response['success'] = false;
$response['Error'] = "No needed data";
echo json_encode($response);
exit(0);
}
ob_start();
$con = mysqli_connect("host", "username", "password", "database");
ob_end_clean();
if (!$con) {
$response['success'] = false;
$response['Error'] = "Error Connecting" . PHP_EOL;
$response['Error'] .= "Error Code: " . mysqli_connect_errno() . PHP_EOL;
$response['Error'] .= "Error: " . mysqli_connect_error() . PHP_EOL;
echo json_encode($response);
exit(0);
}
function registerUser() {
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (username, email, password) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($statement, "sss", $username, $email, $password);
mysqli_stmt_execute($statement);
}
function usernameAvailable() {
global $con, $username;
$statement = mysqli_prepare($con, "SELECT * FROM user WHERE username = ?");
mysqli_stmt_bind_param($statement, "s", $username);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
$count = mysqli_stmt_num_rows($statement);
mysqli_stmt_close($statement);
if ($count < 1){
return true;
}
else {
return false;
}
}
$response["success"] = false;
if (usernameAvailable()){
registerUser();
$response["success"] = true;
}
echo json_encode($response);
?>

PS:连接数据更改为默认值。

将变量$con添加到需要访问数据库的函数的参数中,即 registerUser(( 和 usernameAvailable((

您引用了一个全局 $con,并且它返回未定义。通过使用print_r或其他替代方法对其进行调试来确保它具有值。由于它返回未定义的函数,因此没有正在运行的函数。

尽管引用全局变量是一种不好的做法,但我建议设置一个返回$con变量的函数传递它。

function returnCon(){
$con = mysqli_connect("host", "username", "password", "database");
return $con
}

然后,您可以使用

$con = returnCon();

最新更新