使用PHP和SQLite

时间:2010-05-11 02:39:19

标签: php sqlite pdo

我将使用一个小的SQLite数据库来存储我的应用程序将使用的一些数据。

但是我无法使用PHP将数据插入数据库以正确工作,下面是我正在尝试运行的代码:

<?php
    $day = $_POST["form_Day"];
    $hour = $_POST["form_Hour"];
    $minute = $_POST["form_Minute"];
    $type = $_POST["form_Type"];
    $lane = $_POST["form_Lane"];

    try
    {
        $db = new PDO('sqlite:EVENTS.sqlite');
        $db->exec("INSERT INTO events (Day, Hour, Minute, Type, Lane) VALUES ($day, $hour, $minute, $type, $lane);");
        $db = NULL;
    }
    catch(PDOException $e)
    {
        print 'Exception : '.$e->getMessage();
    }
?>

我已经使用我编写的一些代码成功创建了一个SQLite数据库文件,但我似乎无法将数据插入到数据库中。

4 个答案:

答案 0 :(得分:2)

您不能简单地在查询中插入字符串。请查看PDO::quote()prepared statements

答案 1 :(得分:0)

除非其中一个变量($ day,$ hour等)返回一个空字符串,否则没有任何语法错误。

$db->exec("INSERT INTO events (Day, Hour, Minute, Type, Lane) VALUES ($day, $hour, $minute, $type, $lane);");

话虽如此,我更担心sql注入,因为你在没有验证的情况下将$ _POST变量直接应用到sql语句中。

答案 2 :(得分:0)

您应该在使用COMMIT;修改DML语句(INSERT,DELETE,UPDATE)后显式提交事务。

答案 3 :(得分:0)

您应该使用参数化查询。试试这个:

$db = new PDO('sqlite:EVENTS.sqlite');
$stmnt = $db->prepare("INSERT INTO events (Day, Hour, Minute, Type, Lane) VALUES (:day, :hour, :minute, :type, :lane);");
$stmnt->execute( array('day'=>$day,'hour'=>$hour, 'minute'=>$minute, 'type'=>$type, 'lane'=>$lane) );
$db = NULL;