2013-10-31 44 views
-1

我在一個網站上更新MySQL的函數的過程中的mysqli更新MySQL中的mysqli

這是轉義字符串

$page = $_GET['page']; 
    $page = mysql_escape_string($_GET['page']); 
    $sql = mysql_query("SELECT * FROM about WHERE id = '$page' AND hidden = 1"); 

我試圖將其更改爲

的origonal MySQL的函數
$page = mysqli_real_escape_string($_GET['page']); 

然而,這並沒有工作,我eventally得到它的工作是這樣

$page = mysqli_real_escape_string($con, ($_GET['page'])); 

我不明白爲什麼它需要連接文件作爲peramitor,因爲get函數從url獲取值而不是數據庫?

回答

0

因爲這就是它應該如何使用。

MySQLi函數可以通過對象或普通函數調用方法使用。如果使用對象方法,則不需要連接變量(因爲對象的連接)。如果你正在使用函數方法,mysqli_real_escape_string函數使用(我想象)你打算插入的數據庫的設置來檢索代碼頁等東西。因此,它需要一個連接到它。

挑一個或其他的方法,並堅持下去。就我個人而言,我使用PDO,因爲我覺得它更容易記住。這一點,以及使用預先準備的語句否定了爲插入而轉義字符串的需要,因爲它全部爲您完成

1

我在準備好的語句中使用它。這是一個適合我的例子。

希望它有幫助。

$USR02 = $mysqli->real_escape_string($USR02); 
$query_PC2 = "SELECT count(*) as total FROM uc_users WHERE `display_name`='$USR02' "; 
if ($result_PC2 = $mysqli->query("$query_PC2")) { 
    /* determine number of rows result set */ 
    $total_PC2 = $result_PC2->fetch_row(); 
    $totalPC = $total_PC2['0']; 
    /* close result set */ 
    $result_PC2->close(); 
} 

該查詢獲取行計數,以查看用戶配置文件是否基於用戶名存在。