2016-12-01 90 views
0

我有下面的代碼,一個更大的PHP腳本:轉換一個mysql_real_escape_string函數庫MySQLi

$FullSQL = $inSQL; 
     foreach($ROW as $item) { 
      $ItemName = (string)$item->getName(); 
      $fieldValue = $ROW->$ItemName; 
      $FullSQL = $FullSQL . "'" . mysql_real_escape_string($fieldValue) . "', "; 
     } 
     $inSQL_len = strlen($FullSQL) -2; 
     $FullSQL=substr($FullSQL, 0, $inSQL_len) . ")"; 
     echo "INSERTED FullSQL=" . $FullSQL . "<br><br>"; 

     if (!mysqli_query($con,$FullSQL)) { die('Error insering tmporder: ' . $FullSQL . " ERROR:" . mysqli_error()); } 
     else { 
      echo "INSERTED inSQL=" . $FullSQL . "<br><br>"; 
     } 

    } 
} 

我已經盡力把整個腳本轉換爲mysqli的,除了上面的部分。正如所料,mysql_real_escape_string($fieldValue)部分正在生成一個mysql折舊錯誤。

如何將該段代碼轉換爲使用mysqli?它需要兩個變量,而且只有一個。

謝謝。

+0

'mysqli_real_escape_string($ CON,$字符串)' – Beginner

+0

預處理語句將是比較推薦的路要走:HTTP ://php.net/manual/en/mysqli.quickstart.prepared-statements.php – fredrover

回答

0

什麼

mysqli_real_escape_string ($con, $fieldValue); 

$con是你的鏈接標識由mysqli_connect()mysqli_init()返回。


如果我們比較的mysqli_real_escape_string()mysql_real_escape_string()語法,我們有

mysqli_real_escape_string ($link, $string); 
mysql_real_escape_string ($string[, $link=NULL]); 

所以老功能也有相同的參數,但在不同的順序和$link是過時的版本可選。


如果您決定使用對象樣式,而不是程序使用它像這樣

$con = new mysqli ("host", "user", "pwd", "db"); 
... 
$safe_string = $con->real_escape_string ($string);