7
這種新的安全方式處理PHP和MySql驅動的基於Web的應用程序中的SQL,以保護SQL注入代碼的安全。我打算開始在PDO中使用mysqli。任何人都可以請概述我應該如何開始並繼續。使用PDO準備的參數化查詢
任何對任何文章的引用也會有所幫助。
在此先感謝。
這種新的安全方式處理PHP和MySql驅動的基於Web的應用程序中的SQL,以保護SQL注入代碼的安全。我打算開始在PDO中使用mysqli。任何人都可以請概述我應該如何開始並繼續。使用PDO準備的參數化查詢
任何對任何文章的引用也會有所幫助。
在此先感謝。
要創建連接
try {
$db = new PDO("mysql:dbname=".DB_NAME.";host=".DB_HOST,DB_USER,DB_PWD);
} catch (PDOException $e) {
die("Database Connection Failed: " . $e->getMessage());
}
然後準備語句
$prep = $db->prepare("SELECT * FROM `users` WHERE userid = ':id'");
正如你所看到的,你標註每個你的前綴來任意字符串參數一樣「:」。然後,只需傳遞一個數組,將參數(:id)映射到執行時的值。
if (!$prep->execute(array(":id" => $userinput))) {
$error = $prep->errorInfo();
echo "Error: {$error[2]}"; // element 2 has the string text of the error
} else {
while ($row = $prep->fetch(PDO::FETCH_ASSOC)) { // check the documentation for the other options here
// do stuff, $row is an associative array, the keys are the field names
}
}
而不是PDO :: FETCH_ASSOC與「fetch」函數,有各種其他方式來獲取您的數據。您可以使用fetchAll一次獲取所有結果的數組,而不是逐行進行。或者您可以將信息數組作爲0索引數組,或者甚至可以直接將結果提取到類實例中(如果字段名稱與類的屬性一致)。
所有文檔PDO可以在這裏找到:PHP.net PDO Manual
我相信你不需要圍繞佔位符引號:'「SELECT * FROM \'users \'WHERE userid =:id」' –