Я просто (очень запоздало, я знаю), обновляю часть своего кода от mysql до mysqli, и я заметил, что похоже на изменение поведения в fetch_array.mysql_fetch_array/mysqli_fetch_array - разница в поведении при первом вызове (php)
Не было намерения обфускации путем усечения кода в исходном вопросе, но здесь, если это помогает, это более полный пробег фактического кода.
ИСПОЛЬЗОВАНИЯ: MYSQL
ЭТО проходит через каждую Квалифицируйтесь запись в таблице от первого до последнего
$con_head = mysql_connect($domain,$head_dbname,$head_dbpassword);
if (!$con_head)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($head_dbname, $con_head);
$src_sql = "Select * from SEQUENCES where SEQUENCE_TYPE = 'N' and REVIEWED ='N' order by SEQ_START";
$src_tb = mysql_query($src_sql, $con_head);
while ($src_rec = mysql_fetch_array($src_tb))
{
..... statements here have no relevance to the problem
}
ИСПОЛЬЗОВАНИЯ Mysqli
** Это немедленно SKIPS этого времени CLAUSE **
ЕСЛИ СКОРОСТЬ НЕДАВНО ВЫШЕ, КОГДА НЕ РАСПРОСТРАНЯЕТСЯ - ЭТО ПРОИЗВОДИТ, НО ЗАПУСТИТЬ ИЗ ВТОРОЙ ЗАПИСИ.
$con_head = mysqli_connect("$domain,$head_dbname,$head_dbpassword,$head_dbname); // database name and user name are the same
if (!$con_head)
{
die('Could not connect: ' . mysqli_error());
}
$src_sql = "Select * from SEQUENCES where SEQUENCE_TYPE = 'N' and REVIEWED ='N' order by SEQ_START ";
$src_tb = mysqli_query($con_head, $src_sql);
// $src_rec = mysqli_fetch_array($src_tb,MYSQLI_BOTH);
while ($src_rec = mysqli_fetch_array($src_tb,MYSQLI_BOTH))
{
..... statements here have no relevance to the problem
}
Это прекрасно работает под MySQL, но эквивалент под Mysqli сразу проваливает "а" тест.
Я проверил, что в противном случае код в порядке, добавив дополнительный mysqli_fetch_array перед началом цикла, это отлично работает, хотя и запускает обработку из SECOND-записи.
Понятно, что я могу переписать свой код на цикл по-другому (например, имея $ record = mysqli_fetch_array перед циклом, имея цикл тестирования $ record, а затем дополнительную $ record = mysqli_fetch_array до конца фигурной скобки в цикле while), но я очень хочу понять разницу в поведении, чтобы я не сталкивался с какими-либо другими подводными камнями.
Может ли кто-нибудь объяснить?
Вам нужно будет опубликовать то, что вы использовали точно с помощью функции 'mysqli_'. и это неправильно 'mysql_query ($ con, $ sql)' –
этот код, который вы отправили; не содержит воды –
«эквивалент при mysqli» - Какой эквивалент? Покажите нам [mcve], который демонстрирует проблему, а не какой-то код, который, как вы знаете, нет. – Quentin