Использование PHP и SQLite - PullRequest
1 голос
/ 11 мая 2010

Я собираюсь использовать небольшую базу данных 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 ]

2 голосов
/ 11 мая 2010

Вы не можете просто вставить строки в свой запрос таким образом. Взгляните на PDO :: quote () и подготовленные операторы .

0 голосов
/ 11 мая 2010

Вы должны использовать параметризованные запросы. Попробуйте это:

$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;
0 голосов
/ 11 мая 2010

Вы должны явно фиксировать транзакции после изменения операторов DML (INSERT, DELETE, UPDATE) с помощью COMMIT;.

0 голосов
/ 11 мая 2010

В этом нет ничего синтаксически неправильного, если только одна из переменных ($ day, $ hour и т. Д.) Не возвращает пустую строку.

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

сказав это, я бы больше беспокоился о внедрении SQL, потому что вы применяете переменные $ _POST непосредственно в оператор SQL без проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...