cPanel phpMyAdmin关联PHP代码无法写入RESERVATIONS表问题求助
问题描述
我在cPanel环境下使用phpMyAdmin管理数据库,运行PHP代码时遇到数据无法写入RESERVATIONS表的问题。经过数小时排查发现:手动在phpMyAdmin中执行查询语句可以成功写入,但通过PHP文件运行就无法正常写入数据。
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); if(mysqli_num_rows($query_run)>0) { 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>
注:本项目仅为学校作业,不会公开部署使用,因此暂不需要考虑安全相关问题。
解决方案
- 表单提交方式错误:form标签未指定method属性时默认使用GET方式提交,后端代码使用
$_POST接收参数,永远无法获取到提交的表单数据,插入逻辑根本不会执行。
修复方法:将form标签修改为<form class="GuestForm" method="post"> - 数据库连接变量拼写错误:查询DININGTABLES表时使用的连接变量是
$conn,其余所有数据库操作使用的是$con,变量名不一致会导致查询失败,后续插入逻辑也无法正常执行。
修复方法:统一数据库连接变量名,和dbconfig/config.php中定义的连接变量保持一致即可。 - 插入语句主键赋值错误:如果
reservation_id是自增的INT类型主键,传入带单引号的字符串'NULL'会触发字段类型不匹配错误,无法写入数据。
修复方法:修改INSERT语句,要么直接省略reservation_id字段和对应的值,让数据库自动生成自增ID;要么把值的单引号去掉,直接写NULL。
内容的提问来源于stack exchange,提问作者Mozfet99
相关产品推荐
相关产品推荐

