首页 > 解决方案 > 如何通过php中的表单将时间存储到数据库

问题描述

我想使用准备好的语句通过 HTML 表单将日期和时间分别保存到我的表中。但是它给了我错误:

致命错误:未捕获的错误:在堆栈跟踪中调用 bool 上的成员函数 bind_param():在第 33 行抛出 #0 {main}。

这是我的代码:时间条目位于底部。我正在尝试将它们保存为我的数据库中的 varchar

if(isset($_POST['CateSubmit'])){

    $test_type = $mysqli->real_escape_string($_POST['type2']);
    $course_id = $mysqli->real_escape_string($_POST['course_id']);
    $stream_id = $mysqli->real_escape_string($_POST['stream_id']);
    $subject_id = $mysqli->real_escape_string($_POST['subject_id']);
    $subject_id1 = $mysqli->real_escape_string(empty($_POST['subject_id1'])?'0':$_POST['subject_id1']);
    $chapter_id = $mysqli->real_escape_string(empty($_POST['chapter_id'])?'0':$_POST['chapter_id']);
    $exame_year = $mysqli->real_escape_string($_POST['exame_year']);
    $duration = $mysqli->real_escape_string($_POST['duration']);
    $nag_marks = $mysqli->real_escape_string($_POST['nag_marks']);
    $topic = $mysqli->real_escape_string(empty($_POST['topic'])?'':$_POST['topic']);
    $ap_qty = json_encode($_POST['ap_qty'],JSON_FORCE_OBJECT);
    $s_qty = json_encode($_POST['s_qty'],JSON_FORCE_OBJECT);
    $uniq_id = uniqid();
    $subject_name = $mysqli->real_escape_string($_POST['subject_name']);
    $exam_start_date = $mysqli->real_escape_string($_POST['exam_start_date']);
    $exam_end_date = $mysqli->real_escape_string($_POST['exam_end_date']);
    $exam_start_time = $mysqli->real_escape_string($_POST['exam_start_time']);
    $exam_end_time = $mysqli->real_escape_string($_POST['exam_end_time']);

    $query2= $mysqli->query("INSERT INTO digi_test_exame SET test_id='".$uniq_id."'");
    
    $query = "INSERT INTO digi_mock_test(test_type,course_id,stream_id,subject_id,subject_id1,chapter_id,exame_year,duration,nag_marks,ap_qty,s_qty,uniq_id,subject_name,exam_start_date,exam_end_date,topic,exam_start_time,exam_end_time)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    $statement = $mysqli->prepare($query);
    $statement->bind_param('ssssssssssssssssss', $test_type,$course_id,$stream_id,$subject_id,$subject_id1, $chapter_id, $exame_year,$duration,$nag_marks,$ap_qty,$s_qty,$uniq_id,$subject_name,$exam_start_date,$exam_end_date,$topic,$exam_start_time,$exam_end_time);

这是表格:为了节省时间,跳过表格的其余部分。

 <hr>
                        Exam Schedule
                        <hr>
                        <div class="form-row">
                            <div class="form-group col">
                          <label for="exam_start_date">Test Start Date</label>
                          <input type="date" class="form-control" name="exam_start_date">
                        </div>
                        
                        <div class="form-group col">
                          <label for="exam_end_date">Test End Date</label>
                          <input type="date" class="form-control" name="exam_end_date">
                        </div>
                        <div class="form-group col">
                          <label for="exam_end_date">Test Start At</label>
                          <input type="time" class="form-control" name="exam_start_time">
                        </div>
                        <div class="form-group col">
                          <label for="exam_end_date">Test End At</label>
                          <input type="time" class="form-control" name="exam_end_time">
                        </div>
                            </div>
                        <?php    
                        }
                        ?>
                        <button type="submit" class="btn btn-success mr-2" name="CateSubmit">Submit</button>
                      </form> 

请指导我我做错了什么。我的列名是正确的,并且在添加时间字段之前查询的其余部分正在工作。

标签: phpmysqlsql

解决方案


推荐阅读