Мне нужно адаптировать скрипт PHP5 к PHP7. Я почти понял все, но я заблокирован на небольшой части функции запроса. Мой бывший коллега использовал функцию mysql_field_name, которая больше не доступна в PHP7.
Я попытался изменить код, но кажется, что он не работает.
Это исходный код:
$rep = mysql_query($query);
if ($rep)
{
$i = 0;
while($res = mysql_fetch_row($rep))
{
for($j=0; $j<count($res); $j++)
$tabRes[$i][strtoupper(mysql_field_name($rep, $j))] = $res[$j];
$i++;
}
}
Я попытался заменить mysql_field_name на mysqli_fetch_fields.
$rep = mysqli_query($this->conn_id,$query);;
if ($rep)
{
$i = 0;
while($res = mysqli_fetch_row($rep))
{
for($j=0; $j<count($res); $j++)
$tabRes[$i][strtoupper(mysqli_fetch_fields($rep)->$j)] = $res[$j];
$i++;
}
}
Любая идея, как я могу исправить эту проблему?
Спасибо
Rflow
Проверьте mysqli_fetch_field_direct, который входит в число альтернатив после PHP7
mysqli
значительно менее многословен, что облегчает чтение и аудит кода, и его нелегко спутать с устаревшим интерфейсомmysql_query
. Прежде, чем вы слишком инвестируете в процедурный стиль, стоит переключиться. Пример:$db = new mysqli(…)
и$db->prepare("…")
Процедурный интерфейс является артефактом эпохи PHP 4, когда был представленmysqli
API, и его не следует использовать в новом коде.fetch_assoc
который дает вам ассоциативный массив, что намного проще в использовании, чем необходимость извлечения полей вручную на индивидуальной основе.