【问题标题】:Send user input to SQLite将用户输入发送到 SQLite
【发布时间】:2015-04-06 14:21:45
【问题描述】:

我有一个表格,我想处理并发送到我的 sqlite 数据库。我试图将数据存储在一个数组中,然后将其发送到数据库,但我认为我需要在提交后使用 SQL INSERT INTO 语句,我只是不确定如何正确实现它以及我的代码是否正确所以远的。我有两个不同的页面:

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。认为我错过了一些插入语句,有人可以帮助我并指导我哪里出错了。

【问题讨论】:

    标签: php sql sqlite pdo


    【解决方案1】:

    您必须将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绑定了变量的值,当你想改变值时必须使用它。

    【讨论】:

    • 好的,我这样做了,但它仍然只是将现有数据添加到数组中,而不是我输入到表单中的新数据。我想要它,这样我就可以提交带有唯一数据的表单并将其提交到我的数据库
    • 您必须访问 $_POST / $_GET 变量才能获取表单数据。
    猜你喜欢
    • 2020-10-17
    • 2021-02-17
    • 2021-10-29
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多