我在cpanel的phpmyadmin中使用我的数据库运行此php代码时遇到问题



我在phpmyadmin中运行此代码时遇到问题。它没有在RESERVATIONS表中存储任何内容。我花了好几个小时才想明白。我尝试在phpmyadmin中手动输入查询,结果成功了。然而,在php文件中运行它是另一回事。该表名为RESERVATIONS,它有列:

表格RESERVATIONS列的图像

<?php
require 'dbconfig/config.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>Registration Page</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body style="background-color:#bdc3c7">
<div id="main-wrapper">
<center>
<h2>Registration Form</h2>


<form class="GuestForm">
<label for="fname">First Name:</label>
<input type="text" name="fname" id="fname" required>
<hr>
<label for="lname">Last Name:</label>
<input type="text" name="lname" id="lname" required>
<hr>
<label for="phoneNum">GuestPhone:</label>
<input type="text" name="phoneNum" id="phoneNum" required>
<hr>
<label for="emailaddr">GuestEmail:</label>
<input type="text" name="emailaddr" id="emailaddr" required>
<hr>
<label for="dateNtime">DateTime:</label>
<input type="text" name="dateNtime" id="dateNtime" required>
<hr>
<label for="partySize">Party Size:</label>
<input type="number" name="partySize" id="partySize" min="0" max="10" required>
<input name="submit_btn" type="submit" id="signup_btn" value="Create Reservation"/><br>
</form>
<?php
if(isset($_POST['submit_btn']))
{
echo '<script type="text/javascript"> alert("Submit button clicked") </script>';
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$phoneNum = $_POST['phoneNum'];
$emailaddr = $_POST['emailaddr'];
$dateNtime = $_POST['dateNtime'];
$partySize = $_POST['partySize'];


$query = "SELECT dateNtime from RESERVATIONS WHERE dateNtime = '$dateNtime'";
$query_run = mysqli_query($con,$query);
//$length = mysql_field_len(username, 0);

if(mysqli_num_rows($query_run)>0) 
{
// There is already a reservation for that particular date and time
echo '<script type="text/javascript"> alert("There is already a reservation for that particular date and time") </script>';
}
else{
$result = mysqli_query($conn, 'SELECT SUM(table_size) AS value_sum FROM DININGTABLES WHERE occupied = 0'); 
$row = mysqli_fetch_assoc($result); 
$sum = $row['value_sum'];
echo $sum;


$query = "INSERT into RESERVATIONS(reservation_id, registered_user, username, fname,lname,phoneNum, emailaddr, dateNtime, partySize) values('NULL', 'NULL', 'NULL','$fname','$lname', '$phoneNum', '$emailaddr', '$dateNtime', '$partySize')";
$query_run = mysqli_query($con,$query);

if($query_run)
{
echo '<script type="text/javascript"> alert("Reservation created but not really") </script>';
}
else
{
echo '<script type="text/javascript"> alert("Error!") </script>';
}





}
}
?>
</center>
</div>
</body>
</html>

这不是一件公开的事情,只是一个学校项目。我不担心安全,因为它不会被部署

根据您的模式,insert语句有很多问题。

$query = "INSERT into RESERVATIONS(reservation_id, registered_user, username, fname,lname,phoneNum, emailaddr, dateNtime, partySize) 
values('NULL', 'NULL', 'NULL','$fname','$lname', '$phoneNum', '$emailaddr', '$dateNtime', '$partySize')";

例如:

  1. reservation_id不可为NULL,但您正试图将NULL作为值传递。由于这是一个自动递增的主键,您可能可以从插入语句中删除此列
  2. phoneNum是一个整数,但您正试图传递一个字符串。您可能需要分析此值以确保它是数字
  3. 在将dateNtime插入SQL之前,可能需要对其进行解析。有关更多详细信息,请参阅本文:将日期字符串转换为mysql日期时间字段
  4. partySize是一个整数,但您正试图传递一个字符串。您可能需要分析此值以确保它是数字
  5. 就像其他人在评论中提到的那样,您可能希望去掉'NULL'周围的单引号,而只传递NULL

这些只是你可以尝试的几件事!

如果您在插入数据时仍有问题,请告诉我,并共享任何错误消息,因为这将有助于解决任何剩余问题!

最新更新