【问题标题】:I'm having trouble running this php code with my database in phpmyadmin in cpanel我在 cpanel 的 phpmyadmin 中使用我的数据库运行此 php 代码时遇到问题
【发布时间】:2022-01-03 09:12:53
【问题描述】:

我在 phpmyadmin 中运行此代码时遇到问题。它没有在 RESERVATIONS 表中存储任何内容。我花了几个小时试图弄清楚这一点。我尝试在 phpmyadmin 中手动输入查询,这很成功。但是,在 php 文件中运行它是另一回事。该表称为 RESERVATIONS,它有列:

image of table RESERVATIONS columns

<?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>

这不是公开的事情,只是为了学校项目。我不关心安全性,因为它不会被部署

【问题讨论】:

  • 提交表单后的结果是什么?警报错误?还是创建了警报预留?如果出现错误,请使用mysqli_error($con); 显示错误详细信息。
  • 你有 $con 和 $conn。 (您是否使用两个不同的数据库连接?)。尝试将 $con 更改为 $conn(反之亦然)
  • 是的,我改变了它们。目前,我只关心将数据放入表中。
  • 我应该提到&lt;?php require 'dbconfig/config.php'; ?&gt; 正在工作
  • 是的,我更改了它们 - 请修改您的代码以反映更改,以便我们进一步检查。

标签: php html mysql sql


【解决方案1】:

根据您的架构,您的插入语句存在很多问题。

$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 作为值传递。由于这是一个自动递增的主键,您可以从插入语句中删除此列。
  2. phoneNum 是一个整数,但您正在尝试传递一个字符串。您可能需要解析此值以确保它是数字。
  3. dateNtime 可能需要先解析,然后才能插入 SQL。有关详细信息,请参阅此帖子:convert date string to mysql datetime field
  4. partySize 是一个整数,但您正在尝试传递一个字符串。您可能需要解析此值以确保它是数字。
  5. 就像其他人在 cmets 中提到的那样,您可能希望去掉 'NULL' 周围的单引号,而只需传递 NULL

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-12
    • 2020-08-17
    • 1970-01-01
    • 2018-06-17
    • 2018-11-04
    • 2022-06-30
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多