Хрен
Новичок
Здравствуйте.
Возникла проблема с переносом движка с mysql на mysqli. Ранее пытался найти помощи на тостере, но там помочь не смогли https://toster.ru/q/537186.
Ситуация в том что один и тот же запрос при использовании mysqli возвращает на одну строку меньше.
Очень долго бился над классом в движке, в итоге написал отдельный скрипт без каких либо внешних зависимостей и ошибка подтвердилась.
При этом на сервере стоит phpMyAdmin, который работает судя по выводимой информации через mysqli, и он все варианты этих запросов, что с кавычками что без выполняет правильно.
Возникла проблема с переносом движка с mysql на mysqli. Ранее пытался найти помощи на тостере, но там помочь не смогли https://toster.ru/q/537186.
Ситуация в том что один и тот же запрос при использовании mysqli возвращает на одну строку меньше.
Очень долго бился над классом в движке, в итоге написал отдельный скрипт без каких либо внешних зависимостей и ошибка подтвердилась.
Этот код возвращает на одну строку меньше чем есть в базе. В базе 536 строк.<?php
define('DB_HOSTNAME', '...');
define('DB_USERNAME', '...');
define('DB_PASSWORD', '...');
define('DB_DATABASE', '...');
$mysqli = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
if ($mysqli->connect_error) {
echo 'Error: Could not make a database link (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error;
}
$mysqli->query("SET NAMES 'utf8'");
$mysqli->query("SET CHARACTER SET utf8");
$mysqli->query("SET CHARACTER_SET_CONNECTION=utf8");
$mysqli->query("SET SQL_MODE = ''");
$result = $mysqli->query("SELECT * FROM setting WHERE qwe = '0'");
print_r($result);
?>
Если убрать кавычки в условииmysqli_result Object ( [current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 535 [type] => 0 )
То возращает нормально$result = $mysqli->query("SELECT * FROM setting WHERE qwe = 0");
С другим запросом ещё хуже.mysqli_result Object ( [current_field] => 0 [field_count] => 6 [lengths] => [num_rows] => 536 [type] => 0 )
В базе одна строка, но mysqli возвращает ноль$result = $mysqli->query("SELECT * FROM `language`");
Если убрать кавычки вокруг названии таблицыmysqli_result Object ( [current_field] => 0 [field_count] => 9 [lengths] => [num_rows] => 0 [type] => 0 )
То возвращает всё правильно$result = $mysqli->query("SELECT * FROM language");
Подскажите, пожалуйста, что за полтергейст с mysqli? Почему это расширение так странно реагирует на кавычки, и выдаёт другой результат нежели mysql. Для mysqli нужно как-то особо переписывать запросы?mysqli_result Object ( [current_field] => 0 [field_count] => 9 [lengths] => [num_rows] => 1 [type] => 0 )
При этом на сервере стоит phpMyAdmin, который работает судя по выводимой информации через mysqli, и он все варианты этих запросов, что с кавычками что без выполняет правильно.