php
  • html
  • database
  • 2014-09-03 67 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'])

    相關問題