[英]How do I successfully insert information from a form into a database using a prepared statement with mysqli and php?
我目前正在開發一個考試管理系統,該系統應該生成試卷,並從一堆問題中提取它們。 我從事插入問題功能的工作已經有一段時間了(老實說,幾天),但迄今為止沒有成功。
我正在使用的insert函數包含一個prepare語句,當我將其應用於從互聯網上獲得的一個簡單項目時,該語句成功運行。 數據庫完美更新。 但是,當在我自己的項目中應用相同的概念時,似乎什么也沒發生。
我確定它與SQL查詢無關,因為沒有彈出SQL錯誤。 我檢查了數據庫連接,語法,SQL查詢,並將其與正在運行的項目進行了比較,一切看起來都很好。 我是Php的新手,非常感謝您提供幫助以解決此問題。 提前致謝!
我正在使用PHP 7.0.2和Mysqli 2.4。 另外我正在為HTML使用bootstrap。
這是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>
首先,我沒有在您的html中獲得</head>
。
第二件事,您沒有在insert.php中開始會話。 在代碼頂部啟動它。
session_start();
並確保您正在初始化會話變量,例如$_SESSION["username"]='user1'
。
如果仍然無法正常工作,請確保您連接到正確/正確的數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.