2014-09-03 23 views
5

Cerco di fare il login php ma ottengo questo errore: Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given, cosa faccio di sbagliato?Attenzione: mysqli_real_escape_string() si aspetta esattamente 2 parametri, 1 dato ... cosa faccio di sbagliato?

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> &bullet; 
<a          </div> 
</h3> 
</div> 
<div class="jonne"> 
</div> 
<script src="javascript/jquery.js"></script> 
</body> 
</html> 

io uso 000webhost e questo prima volta quando io uso i database MySQL in linea.

+4

I don intendo essere scortese, ma hai letto l'errore? – sevenseacat

+1

sì, ma non ho buone conoscenze di inglese – user3774980

+1

Non condividere i dettagli delle connessioni, come le impostazioni delle connessioni del database ... – candlejack

risposta

21

si stia mescolando mysqli e mysql la funzione.

Se usate la funzione mysql poi invece mysqli_real_escape_string($your_variable); uso

$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']); 

Se la vostra utilizzando mysqli_ funzione * allora è necessario includere la connessione al database in mysqli_real_escape function:

$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']); 

Nota: Usa la funzione mysqli_ * poiché mysql è stato deprecato. Per informazioni leggere mysqli_ *

3

Da documentation, la funzione mysqli_real_escape_string() ha due parametri.

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

Il primo è un linkper un'istanza mysqli (oggetto di connessione database), il secondo è la stringa di scappare. Quindi, il codice dovrebbe essere come:

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

mysqli_real_escape_string function richiede la connessione al database.

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

P.S .: Non mescolare mysql_ funzioni * e mysqli_ funzioni *. Si prega di utilizzare mysqli_* functions or PDO perché le funzioni mysql_ * sono deprecate e verranno rimosse in futuro.

1

si stia mescolando mysql e mysqli

uso questo mysql_real_escape_string come

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

NOTA:mysql_* è deprecato l'uso mysqli_* o PDO

1

Se si utilizza lo stile di procedura, è necessario fornire sia una connessione e una stringa:

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

la versione orientata agli oggetti può essere fatto solo con solo una stringa:

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

Lo documentation dovrebbe essere chiaro.

-1

uso mysql_real_escape_string() invece di mysqli_real_escape_string()

in questo modo:

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

mysql è stato deprecato – WendiT

1

Utilizzare in questo modo anziché la propria strada.

addslashes(trim($_POST['username'])); 
+0

Per evitare i caratteri speciali utilizzare la convalida di script java nel front-end. – max3000

+1

Non è un modo sicuro di sfuggire alle stringhe per MySQL. – Synchro

0

Sostituire la query con il seguente:

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

C'è leggero cambiamento nel mysql_real_escape_string mysqli_real_escape_string. di seguito la sintassi

sintassi mysql_real_escape_string sarà mysql_real_escape_string ($ _ POST [ 'sample_var'])

sintassi

mysqli_real_escape_string sarà mysqli_real_escape_string ($ conn, $ _ POST [ 'sample_var'])

Problemi correlati