【发布时间】:2019-05-28 16:34:36
【问题描述】:
我正在我的服务器上调用mysqli_report(MYSQLI_REPORT_ALL) 以启用任何可能需要修复的警告和错误。由于MYSQLI_REPORT_INDEX是继承的,所以PHP也是reporting bad/no index use。
我已经正确设置了我的表,但在使用 LIKE 子句时仍然出现以下异常:
mysqli_sql_exception:查询/准备语句中未使用索引(空)
但是,当使用= 而不是LIKE 时,我不再收到此错误。
这可以修复吗?
我的桌子是这样的:
CREATE TABLE `articles` (
`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`Title` VARCHAR(255) NOT NULL COLLATE 'utf8mb4_unicode_ci',
PRIMARY KEY (`ID`),
INDEX `Title` (`Title`)
);
这是我在服务器上测试的代码:
$db = mysqli_connect($Host, $User, $Pass, $Database);
$Stmt = mysqli_stmt_init($db);
// This works
mysqli_stmt_prepare($Stmt, 'SELECT ID FROM articles WHERE Title = ?');
$Title = 'test';
// This doesn't work
mysqli_stmt_prepare($Stmt, 'SELECT ID FROM articles WHERE Title LIKE ?');
$Title = '%test%';
mysqli_stmt_bind_param($Stmt, 's', $Title);
mysqli_stmt_execute($Stmt);
mysqli_stmt_bind_result($Stmt, $ID);
mysqli_stmt_fetch($Stmt);
mysqli_stmt_close($Stmt);
【问题讨论】: