2015-02-06 55 views
0

我有一個表單,我想處理併發送到我的sqlite數據庫。我試圖將數據存儲在數組中,然後將數據發送到數據庫,但我認爲我需要在提交後使用SQL INSERT INTO語句,但我不確定如何正確實現此操作,並且如果我的代碼是正確的遠。我有兩個不同的網頁:發送用戶輸入到SQLite

的index.php:

<div id="wrapper"> 

    <div class="banner1"> 
     <h2>Stock Input</h2> 
    </div> 

<form id="form" method="post"> 
    Name:<br> 
    <input type="text" name="name[0]"/> <br> 
    Gender:<br> 
    <input type="text" name="gender[0]"/> <br> 
    Age:<br> 
    <input type="number" name="age[0]" min="1" max="99"/> <br> 

    <input id="submit" type="submit"> 
    </form> 

</div> 

<div id="results"> 

    <div class="banner2"> 
      <h2>Results</h2> 
    </div> 

    <div class="data"> 
      <?php 
       include 'conn.php'; 

       unset($_POST['submit']); 
       $data=$_POST; 

       foreach ($result as $row) { 
        echo $row['name'] . " "; 
        echo $row['gender'] . " " ; 
        echo $row['age'] . "<br>" . " "; 
       } 

      ?> 
    </div> 


</div> 

conn.php

我曾經在我的index.php一個包括因爲它是越來越亂了,不知道這是正確的使用,但它的工作很好,我認爲。無論如何,這裏是我的頁面,使用PDO創建或連接到sqlite數據庫,準備並將一些測試數據插入到我的數組中。

<?php 
try { 
    $dbh = new PDO('sqlite:mydb.sqlite3'); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $dbh->exec("CREATE TABLE IF NOT EXISTS test (
      name VARCHAR(30), 
      gender VARCHAR(30), 
      age INTEGER)" 
      ); 


    $data = array(
      array('name' => 'Daniel', 'gender' => 'Male', 'age' => '21') 
      ); 

    $insert = "INSERT INTO test (name, gender, age) 
      VALUES (:name, :gender, :age)"; 
    $stmt = $dbh->prepare($insert); 

    $stmt->bindParam('name', $name); 
    $stmt->bindParam('gender', $gender); 
    $stmt->bindParam('age', $age); 

foreach ($data as $m) { 
    $name = $m['name']; 
    $gender = $m['gender']; 
    $age = $m['age']; 

    $stmt->execute(); 

} 
    $result = $dbh->query('SELECT * FROM test'); 

    $dbh = null; 

} 
    catch(PDOException $e) { 

     echo $e->getMessage(); 
}   
?> 

我需要用戶輸入數據從窗體提交到數組和sqlite。想想我錯過了一些插入語句,有人可以幫助我,並指導我哪裏出錯。

回答

0

您必須將bindParam呼叫移動到foreach以內。

foreach ($data as $m) { 
    $name = $m['name']; 
    $gender = $m['gender']; 
    $age = $m['age']; 

    $stmt->bindParam('name', $name); 
    $stmt->bindParam('gender', $gender); 
    $stmt->bindParam('age', $age); 

    $stmt->execute(); 
} 

bindParam綁定變量的值,你有你的時候,當你想改變的值來使用它。

+0

好的,我這樣做,但它仍然只是添加數組中的現有數據,而不是我輸入到表單中的新數據。我喜歡它,所以我可以提交具有唯一數據的表單並將其提交到我的數據庫 – Dianabolz 2015-02-06 12:53:11

+0

您必須訪問$ _POST/$ _GET變量才能獲取表單數據。 – Wieczo 2015-02-20 11:21:23