【问题标题】:PostgreSql PHP query #1: SQLSTATE[42601]: Syntax error:PostgreSql PHP 查询 #1:SQLSTATE[42601]:语法错误:
【发布时间】:2013-04-08 17:58:02
【问题描述】:

我尝试从我设置艺术家的专辑中实现搜索。我从表格中得到变量 我进行查询。我成功地从表单中获取变量。

$words = $_REQUEST['SQLfield'];
$tempquery =  "SELECT * FROM album WHERE to_tsvector(artist) @@ to_tsquery('$words')";
do_sql($tempquery);

当我搜索 Jimi Hendrix 时,结果是:

query #1: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error in tsquery: "Jimi Hendrix "

【问题讨论】:

  • 将用户提供的变量直接传递到查询中,没有任何转义是非常糟糕的事情。

标签: php postgresql search


【解决方案1】:

我没有在 PostgreSQL 中使用全文搜索,但是在快速扫描 the documentation 之后,我认为你应该使用 plainto_tsquery 函数而不是 to_tsquery,因为 to_tsqueryplainto_tsquery 时需要像 'jimi & hendrix' 这样的东西将接受像'Jimi Hendrix' 这样的短语。

【讨论】:

  • 非常感谢。我只是把 to_tsquery 改成了 plainto_tsquery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 2020-06-11
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
相关资源
最近更新 更多