如何使用mysqli和php的预准备语句将表单中的信息成功插入到数据库中?

时间:2017-09-02 14:55:55

标签: php mysql mysqli

我目前正在研究考试管理系统,该系统应该生成试卷,从一系列问题中提取。我一直在努力插入问题功能已经有一段时间了(事实上是好几天)但没有成功。

我正在使用的插入函数包含一个prepare语句,当我将它应用于我从互联网上获得的一个简单项目时,它已成功运行。数据库更新完美。但是当在我自己的项目中应用相同的概念时,似乎没有任何事情发生。

我确定它与SQL查询无关,因为没有弹出SQL错误。我检查了数据库连接,语法,SQL查询,并将它与工作项目并排比较,看起来都很好。我是Php的新手,非常感谢任何协助来帮助解决这个问题。提前谢谢!

我使用的是Php 7.0.2和Mysqli 2.4。我也在使用bootstrap for html。

以下是dbconnect.php的代码

<?php
$con = mysqli_connect("localhost","root","","register");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>

insert.php页面代码:

<?php
require('dbconnect.php');
include("auth.php");

$status = "";
if(isset($_POST['new']) && $_POST['new']==1){

    $trn_date = date("Y-m-d H:i:s");
    $question = $_REQUEST['question'];
    $answer1 = $_REQUEST['answer1'];
    $answer2 = $_REQUEST['answer2'];
    $answer3 = $_REQUEST['answer3'];
    $answer4 = $_REQUEST['answer4'];
    $submittedby = $_SESSION["username"];


$ins_query = "INSERT INTO mcquestions (`quest_desc`, `answ1`, `answ2`, `answ3`, `answ4`, `trn_date`, `submittedby`) 
VALUES (?, ?, ?, ?, ?, ?, ?);"; 

$stmt = mysqli_stmt_init($con);
if(!mysqli_stmt_prepare($stmt, $ins_query)) {
    echo "SQL Error";
} else {
    mysqli_stmt_bind_param($stmt, "sssssss", $question, $answer1, $answer2, $answer3, $answer4, $trn_date, 
        $submittedby);
    mysqli_stmt_execute($stmt);
}
    $status = "New Record Inserted Successfully. </br></br><a href='view.php'>View Inserted Record</a>";
}
?>

以下是插入问题的Html表单:

</head>
<div id="page-wrapper"> 
        <div class="row">
            <div class="col-lg-12">
                <h1 class="page-header">Questions</h1>
            </div>
           <!-- /.col-lg-12 -->
        </div>
      <!--   /.row --> 
        <div class="row">
            <div class="col-lg-12">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        Basic Form Elements
                    </div>
                    <div class="panel-body">
                        <div class="row">
                            <div class="col-lg-6">
                              <form method="POST" action="insert.php">
                                <input type="hidden" name="new" value="1" />                               
                                    <div class="form-group">
                                        <label>Text area</label>
                                        <textarea type="textarea" class="form-control" rows="3" name="question" placeholder="Enter Question" required> </textarea>
                                    </div>
                                    <div class="form-group">

                                        <input type="text" class="form-control" placeholder="Enter First Answer" name="answer1"/>
                                    </div>
                                    <div class="form-group">

                                        <input type="text" class="form-control" placeholder="Enter Second Answer" name="answer2"/>
                                    </div>
                                    <div class="form-group">

                                        <input type="text" class="form-control" placeholder="Enter Third Answer" name="answer3"/>
                                    </div>
                                    <div class="form-group">

                                        <input type="text" class="form-control" placeholder="Enter Fourth Answer" name="answer4"/>
                                    </div>
                                    <div class="form-group">
                                        <input type="submit" name="submit" value="Submit"/>
                                    </div>
                                    <div><p style="color:#FF0000;"><?php //echo $status; ?></p></div>                                      
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

1 个答案:

答案 0 :(得分:0)

首先,我的html中没有</head> 你没有在insert.php中开始会话的第二件事。在代码顶部开始。

session_start();

并确保您正在初始化会话变量,如$_SESSION["username"]='user1'
如果它仍然没有工作,那么请确保你连接到正确/正确的数据库。