web-dev-qa-db-ja.com

警告:mysqli_real_escape_string()は、正確に2つのパラメーター、1つが与えられていることを期待しています...私が間違っていることは何ですか?

私は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("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>

私はmywebデータベースをオンラインで使用するときに初めて000webhostを使用します。

17
SuperTroll

mysqlimysql関数を混合しています。

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

注:mysqlは廃止されているため、mysqli_ *関数を使用します。詳細については、mysqli _*を参照してください。

35
Rakesh Shetty

documentation から、関数mysqli_real_escape_string()には2つのパラメーターがあります。

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

最初のものはmysqliインスタンス(データベース接続オブジェクト)のlinkで、2番目のものはstringエスケープします。したがって、コードは次のようになります。

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

mysqli_real_escape_string function データベースへの接続が必要です。

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

PS:混合しないmysql _関数*およびmysqli _functions *。使ってください mysqli_* functions or PDO mysql_ *関数は非推奨であり、将来削除されるため。

1
John Robertson

mysqlmysqliを混合しています

これを使って mysql_real_escape_string好き

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

注:mysql_*は非推奨ですmysqli_*またはPDO

1
Satish Sharma

手続き型を使用する場合、接続と文字列の両方を提供する必要があります。

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

文字列だけでオブジェクト指向バージョンのみを実行できます。

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

documentation でこれを明確にすべきです。

1
paxdiablo

クエリを次のものに置き換えます。

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

以下は完璧に動作します:-

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

現在、$ connectはデータベースへの接続を含む変数です。接続変数のみを残しました。それを含めると、完全に機能します。

0
Ginaro Maina

パス $connectの最初のパラメーターとしてmysqli_real_escape_stringこの最初の接続のために、ここでrest.readを行います http://php.net/manual/en/mysqli.real-escape-string.php

0
Suchit kumar

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'])になります

0
raghavendra

代わりにこの方法を使用してください。

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