如何在表中声明日期数据类型?它只是以下几个?
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数据类型,我认为应该有办法使用它!
答案 0 :(得分:5)
您发布的代码中存在一个漏洞,似乎可以让任何用户轻松注入任意SQL命令。修复它的两种常用方法是(1)清理输入和(2)使用将命令与(可能不受信任的)参数分开的API。对于(1)我将在PHP文档中查找特定于SQL的转义函数。 (2)的一个着名例子是Perl的DBI。 (我不知道PHP是否有类似的库。)
在SQLite中,没有日期或时间类型。如果数据库中已有日期字符串,则必须确保它们的格式一致。 SQLite手册中的Date and Time Functions列出了一些可能对您的查询有用的函数。