2015-02-06 93 views
1

在三个月内完成任务,认为我今天开始学习并尝试使用PHP,所以请原谅我,如果我马虎。将用户输入插入数组然后插入sqlite数据库

我想创建一个简单的表单,接受用户输入并将其发送到sqlite数据库。

我有一个版本,创建并连接好,并插入数据与我的数组中的预定义数据。我想删除这些数据,并在名为'名字','姓氏'和'年龄'的html中有三个输入字段,它们被输入到我的数组中,名字为$data,然后发送到我的sqlite数据库。接下来,我计划添加我的输入字段,但我正在努力了解它们将如何工作以及数据如何在阵列中适当地进行格式化。对此方法的一些建议将不胜感激(忽略我的第二个foreach循环,我只想在屏幕上查看我的数据)。

这是到目前为止我的代码:

<!DOCTYPE html> 
<html> 
<head> 
<title>Data Input</title> 
<link href="css/style.css" type="text/css" rel="stylesheet" /> 
</head> 
<body> 

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

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

    $data = array(
      array('firstName' => 'Billy', 
        'lastName' => 'Bob', 
        'age' => '18'), 
      array('firstName' => 'Bill', 
        'lastName' => 'Bob', 
        'age' => '32') 
      ); 

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

    $stmt->bindParam('firstName', $firstName); 
    $stmt->bindParam('lastName', $lastName); 
    $stmt->bindParam('age', $age); 

foreach ($data as $m) { 
    $firstName = $m['firstName']; 
    $lastName = $m['lastName']; 
    $age = $m['age']; 

    $stmt->execute(); 


} 
    $result = $dbh->query('SELECT * FROM test'); 
    foreach ($result as $row) { 
     echo "First Name: " . $row['firstName'] . " "; 
     echo "Last Name: " . $row['lastName'] . " "; 
     echo "Age: " . $row['age'] . "<br>" . " "; 
} 

    $dbh = null; 

} 
    catch(PDOException $e) { 
     // Print PDOException message 
     echo $e->getMessage(); 
}   
?> 

</body> 
</html> 
+0

你问的是如何在着陆页上访问PHP表单结果吗? – Cragmonkey 2015-02-06 01:32:24

+0

我在问如何从HTML输入字段收集用户输入,当提交时发送到$ data数组,然后提交给我的sqlite数据库。对不起,如果我含糊不清,很难解释我想要做什么。更具体地说,会像“array('firstName'=> $ firstName,”work?但是那么如何在用户输入提交后将字段保存在该变量中 – Dianabolz 2015-02-06 01:37:34

+0

如果你想要一个更简单的调试方法游览输出比每次写回路和回声,尝试PHP的dBug(http://dbug.ospinto.com/)。它可以节省很多头发拉...尤其是对于更复杂的数组/对象 – Cragmonkey 2015-02-06 01:55:32

回答

0

要生成一个相同的格式为您的$数据字段创建成果(你也可以产生这种使用PHP或动态使用jQuery)的一种形式:

<?php 
if($_SERVER['REQUEST_METHOD'] !== 'POST'){ 
?> 
    <form method="post"> 
     <input type="text" name="firstName[0]"/> 
     <input type="text" name="lastName[0]"/> 
     <input type="number" name="age[0]" min="1" max="99"/> 

     <input type="text" name="firstName[1]"/> 
     <input type="text" name="lastName[1]"/> 
     <input type="number" name="age[1]" min="1" max="99"/> 

     <input type="text" name="firstName[2]"/> 
     <input type="text" name="lastName[2]"/> 
     <input type="number" name="age[2]" min="1" max="99"/> 

     <input type="submit"> 
    </form> 
<?php 
}else{ 

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

    // ... now do your database insert here. 
} 
+0

非常感谢,工作很好,很抱歉,因为模糊不清,猜测你需要$ data = $ _ POST;对吗? – Dianabolz 2015-02-06 01:46:38

+0

啊,是的,很好的电话。 – Cragmonkey 2015-02-06 01:48:44