SQLite中的日期比较

use*_*421 0 sqlite date

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

CREATE TABLE sampleDB (..., sampledate DATE, ...)
Run Code Online (Sandbox Code Playgroud)

现在,如果我想通过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>";
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)

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

当我存储日期为一个字符串,字符串比较,一切都很好,但如果SQLite的有一个日期数据类型,我觉得应该有办法用它!

hil*_*llu 5

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

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

  • 首先,你的反应很粗鲁.无论专业水平如何,本网站都是编程问题.其次,你告诉我一个问题而不告诉我如何解决它.什么部分容易受到注射攻击?我该如何解决这个问题?第三,感谢您告诉我SQLite没有日期或时间类型.这是你的回复中唯一对我有用的部分.最后,我正在寻找一个快速的答案; 不是编程课.根据我的理解,Stack Overflow就是这样:快速解答我们的编程问题. (3认同)