7

这种在 PHP 和 MySql 驱动的基于 Web 的应用程序中处理 SQL 的新安全方式的新方法,以保护代码免受 SQL 注入。我打算开始使用带有 PDO 的 mysqli。任何人都可以请概述我应该如何开始和继续。

对任何文章的任何引用也将有所帮助。

提前致谢。

4

1 回答 1

10

创建连接

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 之外,还有其他各种获取数据的方法。您可以使用 fetchAll 一次获取所有结果的数组,而不是逐行获取。或者,您可以将信息数组作为 0 索引数组获取,或者您甚至可以将结果直接提取到类实例中(如果字段名称与类的属性一致。)

PDO 的所有文档都可以在这里找到:PHP.net PDO Manual

于 2009-08-20T04:01:50.897 回答