我将使用一个小的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数据库文件,但我似乎无法将数据插入到数据库中。
答案 0 :(得分:2)
您不能简单地在查询中插入字符串。请查看PDO::quote()和prepared statements。
答案 1 :(得分:0)
$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;