web-dev-qa-db-fra.com

Attention: mysqli_real_escape_string () attend exactement 2 paramètres, 1 donné ... ce que je fais mal?

J'essaie de faire php login mais j'obtiens cette erreur: Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given, ce que je fais mal? 

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("mysql.example.com","username","password");
    mysql_select_db("my_database");
    $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> &bullet; 
 <a                                       </div>
</h3>
</div>
<div class="jonne"> 
</div>
<script src="javascript/jquery.js"></script>
</body>
</html>

j'utilise 000webhost et cette première fois lorsque j'utilise des bases de données mysql en ligne.

11
user3774980

Vous mélangez les fonctions mysqli et mysql.

Si vous utilisez la fonction mysql, utilisez plutôt 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']);

Si vous utilisez la fonction mysqli_ *, vous devez inclure votre connexion à la base de données dans la fonction 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']);

Remarque: Utilisez la fonction mysqli_ * car mysql est obsolète. Pour plus d'informations, veuillez lire mysqli_ *

30
Rakesh Shetty

Dans documentation , la fonction mysqli_real_escape_string() a deux paramètres.

string mysqli_real_escape_string ( mysqli $link , string $escapestr ).

Le premier est un link pour une instance mysqli (objet de connexion à une base de données), le second est le string à échapper. Donc, votre code devrait être comme:

$username = mysqli_real_escape_string($yourconnectionobject,$_POST['username']);
3
Jenz

fonction mysqli_real_escape_string nécessite la connexion à votre base de données.

$username = mysqli_real_escape_string($your_connection, $_POST['username']);

P.S .: Ne mélangez pas mysql_ fonctions * et mysqli_ fonctions *. Veuillez utiliser mysqli_* functions or PDO car les fonctions mysql_ * sont obsolètes et seront supprimées dans le futur.

1
John Robertson

vous mélangez mysql et mysqli

utiliser ce mysql_real_escape_string comme

$username = mysql_real_escape_string($_POST['username']);

NOTE: mysql_* est obsolète, utilisez mysqli_* ou PDO

1
Satish Sharma

Si vous utilisez le style procédural, vous devez fournir une connexion et une chaîne:

$name = mysqli_real_escape_string($conn, $name);

Seule la version orientée objet peut être réalisée avec juste une chaîne:

$name = $link->real_escape_string($name);

La documentation devrait, espérons-le, être claire.

1
paxdiablo

Utilisez cette façon au lieu de votre façon. 

    addslashes(trim($_POST['username']));
1
max3000

Remplacez votre requête par la suivante: 

$query = mysql_query("INSERT INTO users VALUES('$username','$pass','$email')", `$Connect`);
0
Ethic Or Logics

Ce qui suit fonctionne parfaitement: -

if(isset($_POST['signup'])){
$username=mysqli_real_escape_string($connect,$_POST['username']);
$email=mysqli_real_escape_string($connect,$_POST['email']);
$pass1=mysqli_real_escape_string($connect,$_POST['pass1']);
$pass2=mysqli_real_escape_string($connect,$_POST['pass2']);

Maintenant, le $ connect est ma variable contenant ma connexion à la base de données. Vous avez seulement omis la variable de connexion. Incluez-le et cela fonctionnera parfaitement. 

0
Ginaro Maina

passez $connect comme premier paramètre dans mysqli_real_escape_string pour cette première connexion, puis restez ici.read ici http://php.net/manual/en/mysqli.real-escape-string.php

0
Suchit kumar

Il y a un léger changement dans mysql_real_escape_string mysqli_real_escape_string. sous la syntaxe

la syntaxe mysql_real_escape_string sera mysql_real_escape_string ($ _ POST ['sample_var'])

la syntaxe mysqli_real_escape_string sera mysqli_real_escape_string ($ conn, $ _ POST ['sample_var'])

0
raghavendra