2010-05-11 33 views
1

我打算使用一個小的SQLite數據庫來存儲我的應用程序將使用的一些數據。使用PHP和SQLite

我不能然而得到使用PHP能夠正常工作將數據插入到DB的語法,下面是我試圖運行代碼:

<?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數據庫文件我寫的代碼,但我似乎不能將數據插入到數據庫中。

+1

你是否收到某種錯誤信息?你能發佈你得到的錯誤嗎? – awgy 2010-05-11 03:08:21

回答

0

這裏沒有任何語法錯誤,除非其中一個變量($ day,$ hour等)返回一個空字符串。

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

話說回來,我會更擔心SQL注入,因爲你直接申請$ _ POST變量爲SQL語句不驗證。

0

在修改DML語句(INSERT,DELETE,UPDATE)後,您應該使用COMMIT;顯式提交事務。

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;