php
  • mysqli
  • 2012-06-06 68 views 4 likes 
    4

    在旧版本的MySQL()码,串逃脱一个字符串,我这样做:如何逃脱的mysqli

    t.TeacherUsername = '".mysql_real_escape_string($teacherusername)."' 
    

    我改变我的代码库MySQLi,但我想知道的肯定和是安全的,为了逃避mysqli的字符串是这样如下:

    t.TeacherUsername = '".mysqli_real_escape_string($teacherusername)."' 
    

    而且连接到mysqli的数据库是这样如下:

    $username="xxx"; 
    $password="xxx"; 
    $database="xxx"; 
    
    mysqli_connect('localhost',$username,$password); 
    
    mysqli_select_db($database) or die("Unable to select database"); 
    

    我所做的一切就是将mysql更改为mysqli,是否正确?

    UPDATE:

    这是现在连接到数据库中使用mysqli的正确方法:

    $username="xxx"; 
    $password="xxx"; 
    $database="mobile_app"; 
    
    $mysqli = new mysqli("localhost", $username, $password, $database); 
    
    if (mysqli_connect_errno()) { 
        printf("Connect failed: %s\n", mysqli_connect_error()); 
        exit(); 
    } 
    
    +0

    的可能重复(http://stackoverflow.com/questions/5200051/is-using-mysqli-real-escape-串足以对安全 - 我的查询字符串) – JJJ

    回答

    4

    您使用的功能是不正确。

    您必须使用mysqli_connect返回的mysqli链接资源作为mysqli_real_escape_string的第一个参数。

    例如:[?是用足够的mysqli_real_escape_string,以确保我的查询字符串]

    $username="xxx"; 
    $password="xxx"; 
    $database="xxx"; 
    
    $my = mysqli_connect('localhost',$username,$password); 
    
    mysqli_select_db($my, $database) or die("Unable to select database"); 
    
    $t->TeacherUsername = "'" . mysqli_real_escape_string($my, $teacherusername). "'"; 
    
    相关问题