2013-05-13 157 views
2

如果直接写PostgreSQL的to_tsquery()与PDO的准备语句

$sql = "... to_tsquery('word_1 | word_2')"; 

工作,但如何使用这个语法与PDO的准备语句?

,这是什么正确的语法:

$sql = " ... to_tsquery(:word_1 | :word_2) "; //this is incorrect 

$sth = $db->prepare($sql); 
$sth->execute(
    array(':word_1'=>"word_1", ':word_2'=>"word_2") 
); 

回答

0

像这样:

denis=# select to_tsquery('(foo | bar) & baz'); 
     to_tsquery   
--------------------------- 
('foo' | 'bar') & 'baz' 
(1 row) 

denis=# select (to_tsquery('foo') || to_tsquery('bar')) && to_tsquery('baz'); 
     ?column?   
--------------------------- 
('foo' | 'bar') & 'baz' 
(1 row) 
+0

这怎么回答这个问题? – shapeshifter 2014-01-03 03:22:02

+0

@shapeshifter:通过强调所需的算术,或许?例如,不是'to_tsquery(:word_1 |:word_2)',而是'to_tsquery(:word_1)|| to_tsquery(:word_2)'... – 2014-01-03 10:40:01