我正在尝试使用ADODb准备的语句(使用MySQLi PHP驱动程序)在具有LIKE'%string%'的列中进行搜索:
$q_record = $DB->Prepare("
SELECT author, title
FROM books
WHERE (author LIKE '%?%' OR title LIKE '%?%')
ORDER BY submit_date
");
$record = $DB->GetAll($q_record, array( $q, $q ) ) or die($DB->ErrorMsg());
错误消息就像
“您的SQL语法有误;请查看与您的MariaDB服务器版本相对应的手册,以获取在'nano'%'附近使用正确的语法,或在标题类似'%'nano'%')的位置使用ORDER BY Submit_date DESC)'第4行”
其中“ nano”是搜索关键字。
我怀疑我必须逃脱'?' 但我不知道该怎么做。
干净利落:
$q_record = $DB->Prepare("
SELECT author, title
FROM books
WHERE (author LIKE CONCAT('%', ?, '%') OR title LIKE CONCAT('%', ?, '%'))
ORDER BY submit_date
");
换句话说,参数占位符?
不能像字符串插值那样工作。像使用SQL变量一样使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句