php - 将用户输入插入数组,然后插入 sqlite 数据库

标签 php html mysql arrays sqlite

三个月后要交作业,我想今天就开始学习和试验 PHP,如果我马虎,请原谅我。

我正在尝试创建一个简单的表单,它接受用户输入并将其发送到 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>

最佳答案

要生成一个表单,该表单将创建与 $data 字段格式相同的结果(您也可以使用 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.
}

关于php - 将用户输入插入数组,然后插入 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356907/

相关文章:

MySQL按第一列排序,按第二列排序

mysql - 有人知道一个不错的免费数据库模式逆向工程工具吗?

php - 在 wordpress 的帖子上不显示作者、类别和日期

php - 接口(interface)和外包

php - 如何让我的网站在用户关闭浏览器时自动注销?

html - 在部署之前,是否有压缩 HTML class 属性和 CSS 选择器的工具?

mysql - 如何创建具有一列作为其他列总和的表?

php - 从数据库列 (php-mysql) 中选择的选项没有结果

html - 为什么 vertical-align CSS 属性不起作用并且不会将 span 放在其父级的中间高度?

html - chrome css 错误文本在宽度用完时不会中断