Переношу движок с mysql на mysqli. Казалось бы банальность, но наткнулся на проблему. mysqli query возвращает на одну строку меньше, а точнее пропускает первую строку при этом mysql и phpmyadmin отрабатывает тот же запрос правильно.
Пол дня тыкаю движок, ничего не помогает. Решил написать отдельный тестовый скрипт только с запросом (что бы движок точно никак не влиял на результат), эффект тот же самый, первая строчка игнорируется.
$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 )
В базе 536 объектов, пропущен самый первый. В запросах где возвращается одна строка mysqli возвращает пустоту, mysql возвращает как и положено одну строку.
Тестировал на php 5.3.29/ php 5.4.45 и MySQL 5.7.22.
Вообще не понимаю что это за полтергейст. Что делать то? Переносить на PDO не вариант. В дальнейшем хочу перейти на php7+.