Я довольно новыми для PHP, и я после этой PHP academy tutorial on a register-login system.Преобразование из MySQL в MySQLi, как я могу передать соединение с MySQLi внутри функции?
В учебнике, он использует MySQL функции, как mysql_connect
, mysql_query
и mysql_real_escape_string
т.д.
В соответствии с рекомендациями, я работаю в новом проекте и хотите использовать mysqli для выполнения той же системы входа пользователя. До сих пор у меня есть две функции, требующие подключения к базе данных. Ниже приведен пример моей функции дезинфицировать:
<?php
include ('connect.php');
function sanitize($data){
return mysqli_real_escape_string($data);
}
?>
Когда я пытаюсь запустить это, я получаю сообщение об ошибке, как показано ниже:
Предупреждение: mysqli_real_escape_string() ожидает, ровно 2 параметров, 1 приведены
Итак, я могу добавить соединение к моей функции, как это:
<?php
//include ('connect.php');
function sanitize($data){
$connection = mysqli_connect('localhost', 'root', 'password', 'array-test');
return mysqli_real_escape_string($connection, $data);
}
?>
Что работает успешно! Проблема в том, что вместо того, чтобы передавать мое соединение с базой данных из include, я должен поместить его в функцию вручную. У меня будет несколько функций с использованием подключения к базе данных, и если я повторяю это много, я должен делать что-то неправильно.
До сих пор единственным обходным решением, о котором я думал, является передача переменной соединения в аргументе при вызове функции. Вид, как показано ниже:
<?php
include ('connect.php');
function sanitize($connection, $data){
return mysqli_real_escape_string($connection, $data);
}
?>
Я что-то не хватает? Как я могу избежать вручную добавлять переменную соединения для каждой создаваемой мной функции?
Вы можете использовать 'global $ connection'. Но это означает, что вам всегда нужно использовать одно и то же имя переменной для вашего соединения. – Barmar
Да, видимо. Вам не хватает функции поиска на этом сайте, где этот вопрос уже был задан уже десятки раз. –
Не говоря уже о том, что ваша функция «санитария» неправильна и подвержена инъекции. –