SQLite中的日期比较

时间:2009-11-17 10:27:06

标签: sqlite date

如何在表中声明日期数据类型?它只是以下几个?

CREATE TABLE sampleDB (..., sampledate DATE, ...)

现在,如果我想通过POST表单使用字符串进行查询:

<?php
    $formdate = $_POST["inputname"];

    if($formdate) {
        echo "Searching using query: ".$formdate."<br>";
        $db = new SQLiteDatabase("testDB.db");
        $query = $db->query("SELECT * FROM sampleDB WHERE sampledate = ".$formdate);
        while($entry = $query->fetch(SQLITE_ASSOC)) {
            echo "result: " ... "<br>";
        }
    }
?>

这似乎不起作用。它不会返回我想要的条目。

当我将日期存储为字符串并比较字符串时,一切都很好,但如果SQLite有DATE数据类型,我认为应该有办法使用它!

1 个答案:

答案 0 :(得分:5)

您发布的代码中存在一个漏洞,似乎可以让任何用户轻松注入任意SQL命令。修复它的两种常用方法是(1)清理输入和(2)使用将命令与(可能不受信任的)参数分开的API。对于(1)我将在PHP文档中查找特定于SQL的转义函数。 (2)的一个着名例子是Perl的DBI。 (我不知道PHP是否有类似的库。)

在SQLite中,没有日期或时间类型。如果数据库中已有日期字符串,则必须确保它们的格式一致。 SQLite手册中的Date and Time Functions列出了一些可能对您的查询有用的函数。