警告:mysqli_real_escape_string()正好需要2个参数,1给出......我做错了什么?

时间:2014-09-03 05:40:48

标签: php html database

我尝试make 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>

我使用000webhost,这是我第一次在线使用mysql数据库。

11 个答案:

答案 0 :(得分:32)

您正在混合mysqlimysql功能。

如果您使用的是mysql函数,请使用<{p}} 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 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']);

注意:使用mysqli_ *函数,因为不推荐使用mysql。有关信息,请阅读 mysqli_ *

答案 1 :(得分:3)

documentation开始,函数mysqli_real_escape_string()有两个参数。

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

第一个是mysqli实例(数据库连接对象)的链接,第二个是要转义的字符串。所以你的代码应该是:

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

答案 2 :(得分:1)

mysqli_real_escape_string function需要连接到您的数据库。

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

PS:请勿混用 mysql _ 函数* mysqli _ 函数* 。请使用mysqli_* functions or PDO,因为不推荐使用mysql_ *函数,将来会删除它们。

答案 3 :(得分:1)

您正在混合mysqlmysqli

使用此mysql_real_escape_string

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

注意: mysql_*已被弃用[{1}}或mysqli_*

答案 4 :(得分:1)

如果使用过程样式,则必须同时提供连接和字符串:

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

只能使用字符串来完成面向对象的版本:

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

documentation应该希望明确这一点。

答案 5 :(得分:1)

使用这种方式而不是你的方式。

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

答案 6 :(得分:0)

$connect作为第一个make连接的mysqli_real_escape_string中的第一个参数,然后在此处执行rest.read http://php.net/manual/en/mysqli.real-escape-string.php

答案 7 :(得分:0)

使用以下内容替换您的查询:

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

答案 8 :(得分:0)

mysql_real_escape_string mysqli_real_escape_string略有变化。低于语法

mysql_real_escape_string语法将是 mysql_real_escape_string($ _ POST [&#39; sample_var&#39;])

mysqli_real_escape_string语法将是 mysqli_real_escape_string($ conn,$ _ POST [&#39; sample_var&#39;])

答案 9 :(得分:0)

以下内容可以正常工作:-

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 是我的变量,包含与数据库的连接。您仅忽略了连接变量。包括它,它将可以正常工作。

答案 10 :(得分:-1)

使用mysql_real_escape_string()代替mysqli_real_escape_string()

像这样:

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