使用PDO插入表单数据不起作用

时间:2014-09-12 10:09:26

标签: php validation pdo

我有一个多页表单,我希望使用会话来存储字段值,在每个页面中进行一些验证,最后从所有页面收集值并存储在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>

1 个答案:

答案 0 :(得分:1)

您的下拉框名称是出生地,将其更改为q5以获取q5变量中的数据或将birthplace分配给q5

我也怀疑q6变量。将下拉框countrylived名称更改为q6,或将countrylived分配给q6