我试图使用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'%' OR title LIKE '%'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变量一样使用它。