Я звоню mysqli_report(MYSQLI_REPORT_ALL)
на моем сервере, чтобы включить любые предупреждения и ошибки, которые могут потребоваться исправить.Поскольку MYSQLI_REPORT_INDEX
наследуется, PHP также сообщает о неправильном / нет использования индекса .
Я правильно настроил свою таблицу, но все равно получаю следующее исключение при использовании предложения LIKE:
mysqli_sql_exception: индекс не используется в запросе / подготовленном операторе (null)
Однако при использовании =
вместо 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);