Php 在ADOdb准备语句中使用LIKE时出现SQL语法错误
我正在尝试使用ADODb prepared语句(使用MySQLi PHP驱动程序)在类似“%string%”的列中搜索,如下所示:Php 在ADOdb准备语句中使用LIKE时出现SQL语法错误,php,adodb,Php,Adodb,我正在尝试使用ADODb prepared语句(使用MySQLi PHP驱动程序)在类似“%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, arra
$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'%”或类似于''nano'%”的标题的正确语法”
其中“nano”是搜索关键字
我怀疑我必须逃离“?”,但我不知道该怎么做。简单明了:
$q_record = $DB->Prepare("
SELECT author, title
FROM books
WHERE (author LIKE CONCAT('%', ?, '%') OR title LIKE CONCAT('%', ?, '%'))
ORDER BY submit_date
");
换句话说,参数占位符?
的工作方式与字符串插值不同。像使用SQL变量一样使用它