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”' –