我有一个多页表单,我希望使用会话来存储字段值,在每个页面中进行一些验证,最后从所有页面收集值并存储在DB中。我使用了This tutorial ,但我想用PDO而不是Mysql。有人可以帮我了解这段代码的问题是什么,以及为什么它在DB中什么都不插入?
这是将数据插入db:
的php代码<?php
session_start();
try{
$conn = new PDO('mysql:dbname=Application;host=localhost;charset=utf8', 'user', 'mypass');
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('INSERT INTO test (q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, q15, q16, q17, q18, q19, q20, q21, q22, q23, q24, q25) VALUES (:q1, :q2, :q3, :q4, :q5, :q6, :q7, :q8, :q9, :q10, :q11, :q12, :q13, :q14, :q15, :q16, :q17, :q18, :q19, :q20, :q21, :q22, :q23, :q24, :q25)');
$stmt->execute(array(':q1' => $q1,':q2' => $q2, ':q3' => $q3, ':q4' => $q4, ':q5' => $q5, ':q6' => $q6, ':q7' => $q7, ':q8' => $q8, ':q9' => $q9, ':q10' => $q10, ':q11' => $q11, ':q12' => $q12, ':q13' => $q13, ':q14' => $q14, ':q15' => $q15, ':q16' => $q16, ':q17' => $q17, ':q18' => $q18, ':q19' => $q19, ':q20' => $q20, ':q21' => $q21, ':q22' => $q22, ':q23' => $q23, ':q24' => $q24, ':q25' => $q25));
}
catch(Exception $e) {
echo 'Exception -> ';
var_dump($e->getMessage());
}
header('Location: Thankyou.php');
exit;
?>
这是我表单最后一页的代码:
<?php
session_start();
if (isset($_POST['q25'])) {
if (!empty($_SESSION['post'])){
if (empty($_POST['productionCountry2'])
|| empty($_POST['q24'])
|| empty($_POST['q25'])){
// Setting error for page 5.
$_SESSION['error_page5'] = "Mandatory field(s) are missing, Please fill it again";
header("location: page5.php"); // Redirecting to fifth page.
} else {
foreach ($_POST as $key => $value) {
$_SESSION['post'][$key] = $value;
}
extract($_SESSION['post']); // Function to extract array.
include('insertData.php'); //the php file which insert data into db
unset($_SESSION['post']); // Destroying session.*/
}
} else {
header("location: page1.php"); // Redirecting to first page.
}
} else {
header("location: page1.php"); // Redirecting to first page.
}
?>
<html>
<head>
<title>Survey Form</title>
<meta http-equiv="content-Type" content="text/html: charset=UTF-8" />
<style type="text/css">
body{
background: url('http://thecodeplayer.com/uploads/media/gs.png');
background:
linear-gradient(rgba(196, 102, 0, 0.2), rgba(155, 89, 182, 0.2)),
url('http://thecodeplayer.com/uploads/media/gs.png');
text-align: center;
margin-top: 300px;
font-size: 200%;
}
</style>
</head>
<body>
</body>
</html>
编辑这是与下拉列表相关的代码(表单中的问题5)
<html>
<fieldset id = "q5"> <legend class="Q5"></legend>
<span> Where were you born?</span><span>*</span>
<div class="fieldset content">
<p>
<?php
include('newCountry.php');
?>
<select name="q5[]" multiple="multiple" width="200px" size="10px">
<?php while ($line = mysql_fetch_array($result)) {
?>
<option value="<?php echo $line['country'];?>"> <?php echo $line['country'];?> </option>
<?php
}
?>
</select>
</p>
</div>
</fieldset>
</html>
答案 0 :(得分:1)
您的下拉框名称是出生地,将其更改为q5
以获取q5
变量中的数据或将birthplace
分配给q5
。
我也怀疑q6
变量。将下拉框countrylived
名称更改为q6,或将countrylived
分配给q6
。