Ответ 1
Короткий ответ нет, функции не эквивалентны.
Хорошей новостью является инструмент конвертера, который поможет вам, если у вас много вызовов/проектов для изменения. Это позволит вашим скриптам работать сразу.
https://github.com/philip/MySQLConverterTool
Это разветвленная версия оригинальной версии Oracle, и она кошерная.
Тем не менее, не так уж сложно обновить свой код, и вы, возможно, захотите перейти на объектно-ориентированную методологию...
1) Соединение
Для всех целей и задач вам нужна новая функция соединения, которая сохраняет соединение как переменную PHP, например:
$mysqli = new mysqli($host,$username,$password,$database);
Примечание. Я сохранил подключение к $mysqli
. Вы можете сохранить в $db
или что угодно, но вы должны использовать это во всем своем коде для ссылки на соединение.
Не забудьте проверить наличие ошибки соединения,
if ($mysqli->connect_errno) echo "Error - Failed to connect to MySQL: " . $mysqli->connect_error;
2) Запрос
Примечание. Вы должны защищать от SQL-инъекции с помощью подготовленных операторов, которые доступны в MySQLi. Взгляните на Как я могу предотвратить SQL-инъекцию в PHP?, но я просто расскажу об основах здесь.
Теперь вам нужно включить соединение в качестве аргумента в свой запрос и другие функции mysqli_
. В процедурном коде это первый аргумент, в OO вы пишете его как метод класса;
Процедурные:
$result = mysqli_query($mysqli,$sql);
OO:
$result = $mysqli->query($sql);
3) Результат извлечения
Извлечение результата аналогично старой mysql_
функции в процедуре;
while($row = mysqli_fetch_assoc($result))
но поскольку $result
теперь является объектом в mysqli, вы можете использовать вызов функции объекта;
while($row = $result->fetch_assoc())
4) Закрыть соединение
Итак, как и раньше, вам нужно включить соединение в функцию закрытия; как аргумент в процедуре;
mysqli_close($mysqli);
и как объект, в котором вы запускаете функцию в OO;
$mysqli->close();
Я был бы здесь навсегда, если бы прошел через все их, но вы поняли эту идею. Посмотрите документацию для получения дополнительной информации. Не забудьте преобразовать любые функции закрытия соединения, результата или функции подсчета и подсчета строк.
Основное правило - для функций, которые используют соединение с базой данных, теперь вы должны включить его в функцию (либо в качестве первого аргумента в процедуре, либо объект, который вы используете для вызова функции в OO), либо для в результирующем наборе вы можете просто изменить функцию на mysqli_
или использовать результирующий набор как объект.