已经看过几个例子,当单词用双引号括起来时,按短语进行全文搜索.但是,在我的情况下,我有一个变量来自我要搜索的post数组.
function find_images($term,$dbh) {
$results = $dbh->prepare("
SELECT * FROM images
WHERE
MATCH(imgTitle,imgDescr,copyright,keywords)
AGAINST( "$term" IN BOOLEAN MODE)
ORDER BY copyright, images.imgName, images.sortOrder ASC");
$results->execute();
Run Code Online (Sandbox Code Playgroud)
这不起作用:
解析错误:语法错误,意外的'$ term'(T_VARIABLE)...
我在用
AGAINST('+$term*' IN BOOLEAN MODE) ...
Run Code Online (Sandbox Code Playgroud)
但是返回包含短语中任何单词的结果.如果我在代码中输入确切的短语,我会得到正确的结果.所以我的问题是如何将我的变量放入我的代码中的双引号中,而不是抛出错误?
你的报价都错了.PHP将在查询中用单引号插入变量,如下所示:
function find_images($term,$dbh) {
$results = $dbh->prepare("
SELECT * FROM images
WHERE
MATCH(imgTitle,imgDescr,copyright,keywords)
AGAINST( '$term' IN BOOLEAN MODE)
ORDER BY copyright, images.imgName, images.sortOrder ASC");
$results->execute();
Run Code Online (Sandbox Code Playgroud)
Little Bobby说你的脚本存在SQL注入攻击的风险.了解MySQLi的预准备语句.即使逃避字符串也不安全!
既然你已经在使用一个数据库API,支持他们,和你准备的查询,这将有利于您使用带有变量的占位符准备语句.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |