@m4f1

Как правильно переписать функции php 5 на php 7?

Имеется старый код cms, который нужно обновить на новую версию php, как правильно это сделать?
Например (запросы к бд):
/* Установка соединения с базой данных */

function connect($dbhost, $dblogin, $dbpass, $database) {
    global $link;
    $link = mysql_connect($dbhost, $dblogin, $dbpass) or die(mysql_error());
    mysql_select_db($database) or die(mysql_error());
    mysql_query('SET NAMES utf8');
}

/* Закрытие соединения с базой данных */

function close($link) {
    global $link;
    mysql_close($link);
}

connect($dbhost, $dblogin, $dbpass, $database);
$query_admin = mysql_query("SELECT * FROM admin WHERE uid='1'");
$row_admin = mysql_fetch_array($query_admin);
$guid_agent = $row_admin['guid_agent'];
$agent = $row_admin['agent'];
  • Вопрос задан
  • 601 просмотр
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Менять тут надо не тоьлко код, но и подход.
потому что большая часть старого кода - это бессмысленные телодвижения, которые не приводят ни к какому результату.
Повторить тоже самое в пхп7 не удастся.

вместо функции connect надо написать вот такой код
$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
    $mysqli = mysqli_connect($host, $user, $pass, $db);
    mysqli_set_charset($mysqli, $charset);
} catch (\mysqli_sql_exception $e) {
     throw new \mysqli_sql_exception($e->getMessage(), $e->getCode());
}
unset($host, $db, $user, $pass, $charset);

везде где раньше вызывалась эта функция, ее надо будет убрать
вместо функции close() не нужно ничего, просто убрать все вызовы из кода.

Вместо последнего блока кода
$result = mysqli_query($mysqli, "SELECT * FROM admin WHERE uid='1'");
$row = mysqli_fetch_assoc($result);
$guid_agent = $row_admin['guid_agent'];
$agent = $row_admin['agent'];

Но самое главное - это код, где используются переменные в запросах.
Их переписать так
$sql = "SELECT * FROM users WHERE id=?"; // знак вопроса вместо переменной
$stmt = $conn->query($sql); 
$stmt->bind_param("s", $id); // переменная идет сюда
$Stmt->execute();
$result = $stmt->get_result(); // получаем result
$user = $result->fetch_assoc(); // получаем массив
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект