使用PHP和HTML输入搜索Sqlite数据库

时间:2018-04-17 16:31:47

标签: php ajax sqlite

编辑 - 以下代码显示更正

我需要创建一个搜索函数,在SQLite数据库中搜索某个日期范围。

例如:

  • 如果用户输入" 7",它将查找在接下来的7天内有日期的所有记录。
  • 如果用户要输入" -7"它将查找过去7天内的所有记录。

到目前为止,我有:

if (!empty($_POST)) {
    $sql = "SELECT * from table where record_date between date('now') and date('now', :record_date||' days')"; 
    $stmt = $db->prepare($sql);
    $stmt->bindValue(':record_date' , '%'.$webdata['record_date'].'%', SQLITE3_TEXT);
    $result = $stmt->execute();
    while ($row = $result->fetchArray()) { 
        echo '<p>' . htmlspecialchars($row['id'])  . " : " . 
        htmlspecialchars($row['record_date']).'</p>';
    }
}
?>

这似乎没有带来任何结果。

如果我使用SqliteOnline.com查询数据库,这对查询工作正常:

SELECT * from table where record_date between date('now') and date('now', '7 days')

2 个答案:

答案 0 :(得分:0)

关闭引号 $ sql =“SELECT * from table where record_date between date('now')and date('now',':record_date days');”

答案 1 :(得分:0)

不应引用命名占位符,因为它们会被解释为文字值。

尝试更改:

date('now', ':record_date days')

为:

date('now', :record_date||' days')

您还需要修改以下内容:

$stmt->bindValue(':record_date' , '%'.$webdata['record_date'].'%', SQLITE3_TEXT);

为:

$stmt->bindValue(':record_date' , $webdata['record_date'], SQLITE3_TEXT);