Я пытаюсь сделать php логин, но я получаю эту ошибку: Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given,
что я делаю неправильно?
register.php
<!doctype html> <html lang"fi"> <head> <link rel="icon" type='image/png' href='images/logo.png'> <title> asd </title> <link href="css/styles.css" type="text/css" rel="stylesheet"> </head> <body> <!--reg alkaa--> <form action="register.php" method="post"> <p><input type="text" name="username" placeholder="Username"> <p><input type="email" name="email" placeholder="Email"> <p><input type="password" name="pass" placeholder="Password"> <p><input type="password" name="pass1" placeholder="Password"> <p><input type="submit" name="submit" value="Register"> </form> <?php if(isset($_POST['submit'])) { $username = mysqli_real_escape_string($_POST['username']); $pass = mysqli_real_escape_string($_POST['pass']); $pass1 = mysqli_real_escape_string($_POST['pass1']); $email = mysqli_real_escape_string($_POST['email']); if($username && $pass && $pass1 && $email) { if($pass==$pass1) { $connect = mysql_connect("mysql13.000webhost.com","a2955851_SW","ASPIREX1930"); mysql_select_db("a2955851_SW"); $query = mysql_query("INSERT INTO users VALUES('$username','$pass','$email');"); echo "You have been registered."; } else { echo "Password must match."; } } else { echo "All fields are required."; } } ?> <!--reg end--> <Center> <a href="index.php"> <h1> asd </h1> </center> <div id="main"> <h3> <div class="menu"> <a href="index.php">Etusivu</a> • <a </div> </h3> </div> <div class="jonne"> </div> <script src="javascript/jquery.js"></script> </body> </html>
Я использую 000webhost и это первый раз, когда я использую базы данных mysql онлайн.
Вы смешиваете функцию mysqli
и mysql
.
Если вы используете mysql-функцию, то вместо mysqli_real_escape_string($your_variable);
использование
$username = mysql_real_escape_string($_POST['username']); $pass = mysql_real_escape_string($_POST['pass']); $pass1 = mysql_real_escape_string($_POST['pass1']); $email = mysql_real_escape_string($_POST['email']);
Если вы используете mysqli_ * функцию, вы должны включить ваше подключение к базе данных в функцию mysqli_real_escape :
$username = mysqli_real_escape_string($your_connection, $_POST['username']); $pass = mysqli_real_escape_string($your_connection, $_POST['pass']); $pass1 = mysqli_real_escape_string($your_connection, $_POST['pass1']); $email = mysqli_real_escape_string($your_connection, $_POST['email']);
Примечание. Используйте функцию mysqli_ *, поскольку mysql устарел. Для информации, пожалуйста, прочитайте mysqli_ *
Из документации функция mysqli_real_escape_string()
имеет два параметра.
string mysqli_real_escape_string ( mysqli $link , string $escapestr ).
Первый – это ссылка на экземпляр mysqli (объект подключения к базе данных), второй – строка для выхода. Таким образом, ваш код должен выглядеть так:
$username = mysqli_real_escape_string($yourconnectionobject,$_POST['username']);
Для функции mysqli_real_escape_string требуется подключение к вашей базе данных.
$username = mysqli_real_escape_string($your_connection, $_POST['username']);
PS: Не смешивайте функции mysql_ * и mysqli_ * . Используйте mysqli_* functions or PDO
поскольку функции mysql_ * устарели и будут удалены в будущем.
вы смешиваете mysql
и mysqli
используйте этот mysql_real_escape_string
как
$username = mysql_real_escape_string($_POST['username']);
ПРИМЕЧАНИЕ: mysql_*
устарел использовать mysqli_*
или PDO
Если вы используете процедурный стиль, вы должны указать как соединение, так и строку:
$name = mysqli_real_escape_string($conn, $name);
Только объектно-ориентированная версия может быть выполнена только с помощью строки:
$name = $link->real_escape_string($name);
Документация, как мы надеемся, сделает это ясным.
передать $connect
качестве первого параметра в mysqli_real_escape_string
для этого первого подключения, а затем сделать rest.read здесь http://php.net/manual/en/mysqli.real-escape-string.php
Используйте этот путь вместо своего пути.
addslashes(trim($_POST['username']));
Замените запрос следующим:
$query = mysql_query("INSERT INTO users VALUES('$username','$pass','$email')", `$Connect`);
Существует небольшое изменение в mysql_real_escape_string mysqli_real_escape_string. синтаксис ниже
Синтаксисом mysql_real_escape_string будет mysql_real_escape_string ($ _ POST ['sample_var'])
Синтаксисом mysqli_real_escape_string будет mysqli_real_escape_string ($ conn, $ _ POST ['sample_var'])
используйте mysql_real_escape_string()
вместо mysqli_real_escape_string()
вот так:
$username = mysql_real_escape_string($_POST['username']);