Php 无法访问if语句中的变量
我正试图使用此代码在我的预订系统中阻止双重预订。当您两次输入同一时间时,会出现以下错误:Php 无法访问if语句中的变量,php,Php,我正试图使用此代码在我的预订系统中阻止双重预订。当您两次输入同一时间时,会出现以下错误: Email is validthis time is already booked Notice: Undefined variable: sql in C:\xampp\htdocs\book.php on line 44 Warning: mysqli_query(): Empty query in C:\xampp\htdocs\book.php on line 44 Error: 这是我的密码
Email is validthis time is already booked
Notice: Undefined variable: sql in C:\xampp\htdocs\book.php on line 44
Warning: mysqli_query(): Empty query in C:\xampp\htdocs\book.php on line 44
Error:
这是我的密码
<?php
//$error = ""; // Initialize error as blank
$con=mysqli_connect("localhost","","","");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$email = $_POST['email'];
$time = $_POST["time"];
$name = $_POST["name"];
$surname = $_POST["surname"];
$date = $_POST["date"];
$adl1 = $_POST["adl1"];
$adl2 = $_POST["adl2"];
$postcode = $_POST["postcode"];
if(!filter_var(($email), FILTER_VALIDATE_EMAIL))
{
echo "E-mail is not valid";
}
else
{
echo "Email is valid";
$result = mysqli_query($con, "SELECT time FROM tbl_booking WHERE time = '$time'") or trigger_error("Query Failed! SQL: $result - Error: ".mysqli_error($con), E_USER_ERROR);
if(mysqli_num_rows($result) == 0)
{
$sql="INSERT INTO tbl_booking (name, surname, email, date, time, adl1, adl2, postcode) VALUES ('$name','$surname','$email','$date','$time','$adl1','$adl2','$postcode')";
}
else
{
echo("this time is already booked");
}
if (!mysqli_query($con, $sql))
{
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
}
}
基本上,我认为它试图访问if语句中的$sql,但我不知道为什么它不能。除非我很愚蠢。将$sql设置为全局->您只需要在if语句之前创建它。尝试在php代码顶部声明$sql值,因为您的代码不会执行
if(mysqli_num_rows($result) == 0)
{
$sql="INSERT INTO tbl_booking (name, surname, email, date, time, adl1, adl2, postcode) VALUES ('$name','$surname','$email','$date','$time','$adl1','$adl2','$postcode')";
}
此条件实际上是在执行else主体,这就是为什么它会生成$sql变量未定义的异常您可以将代码重写为,因为在else条件下,没有对mysqli_查询的查询,这就是为什么您会出现错误
if(mysqli_num_rows($result) == 0){
$sql="INSERT INTO tbl_booking (name, surname, email, date, time, adl1, adl2, postcode) VALUES ('$name','$surname','$email','$date','$time','$adl1','$adl2','$postcode')";
mysqli_query($con, $sql) or die('Error: ' . mysqli_error($con));
} else {
echo("this time is already booked");
}
当mysqli_num_rows$result!=0您只在if中设置了变量$sql,但是如果在else中设置了变量$sql,您的$sql将为null,您将得到一个错误。在尝试使用mysqli\u查询之前,应该检查是否设置了该变量