我正试图使用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服务器版本对应的手册,在第4行的'nano'%'或title LIKE'%'nano'%')ORDER BY submit_date DESC)'附近使用正确的语法"
其中"nano"是搜索关键字。
我怀疑我必须逃离"?"但我不知道该怎么做。
简单明了:
$q_record = $DB->Prepare("
SELECT author, title
FROM books
WHERE (author LIKE CONCAT('%', ?, '%') OR title LIKE CONCAT('%', ?, '%'))
ORDER BY submit_date
");
换句话说,参数占位符?
的工作方式与字符串插值不同。像使用SQL变量一样使用它。