php
  • html
  • database
  • 2014-09-03 73 views 5 likes 
    5

    我尝试使php登录,但我得到这个错误:Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given,我做错了什么?警告:mysqli_real_escape_string()需要2个参数,1给出...我做错了什么?

    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> 
    

    我使用000webhost的这第一次,当我在网上使用MySQL数据库。

    +4

    我不这不意味着粗鲁,但你读过错误吗? – sevenseacat 2014-09-03 05:42:58

    +1

    是的,但我没有很好的英语技能 – user3774980 2014-09-03 14:57:36

    +1

    不要分享你的连接细节,如数据库连接设置... – candlejack 2017-02-27 05:06:32

    回答

    21

    你混合mysqlimysql功能。

    如果您是如果你使用mysqli_ *功能,那么你必须包括您连接到数据库到mysqli_real_escape function使用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']); 
    

    $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_ *

    3

    从​​3210起,功能mysqli_real_escape_string()有两个参数。

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

    第一个为mysqli的实例(数据库连接对象)一个链路,第二个是逸出。所以,你的代码应该是这样的:

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

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

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

    P.S:不要混用mysql_功能*mysqli_功能*。请使用mysqli_* functions or PDO,因为mysql_ *函数已被弃用,将来会被删除。

    1

    你混合mysqlmysqli

    使用本mysql_real_escape_string

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

    注:mysql_*不赞成使用mysqli_*PDO

    0

    $connect作为第一个参数mysqli_real_escape_string此首先进行连接,然后做rest.read这里http://php.net/manual/en/mysqli.real-escape-string.php

    1

    如果您使用的程序的风格,你必须同时提供一个连接和一个字符串:

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

    只有面向对象的版本可以只用一个字符串来完成:

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

    ​​3210应该有希望使这个清楚。

    -1

    使用mysql_real_escape_string()代替mysqli_real_escape_string()

    像这样:

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

    mysql已被弃用 – WendiT 2017-09-09 08:09:51

    1

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

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

    为避免特殊字符在前端使用java脚本验证。 – max3000 2014-09-03 06:09:26

    +1

    这不是逃脱MySQL的字符串的安全方式。 – Synchro 2014-09-03 06:28:03

    0

    改为如下查询:

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

    有一个在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($康恩,$ _ POST [ 'sample_var'])

    相关问题