目前,我正在开发我的第一个网站。现在,我正在实现 PHP 的 MySQL 扩展。然而,从我一直在阅读的内容来看,使用 PHP 的 PDO 将是一种更好的方法,原因有很多,例如使用占位符等等。
在浏览了一些代码之后,我对一些事情感到好奇。例如,假设我创建了一个连接和查询:
$pdo = new PDO('mysql:host=localhost;dbname=something','root','abc');
$sql="select id from users where username = :username and password = :password";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(":username",$_POST['username']);
$stmt->bindParam(":password",$_POST['password']);
$stmt->execute();
首先,是否 $stmt->execute(); 实际执行整个查询?如果是这样,为什么?如果是这种情况,我的假设是,在某种程度上,它本质上与准备好的语句相关联,因此它绑定到准备好的 sql 语句。
此外,很明显准备好的语句可以更好地防止 sql 注入。我的问题是什么时候在 PDO 中清理了用户输入。为了解释,在 MySQL 扩展中,诸如 mysql_real_escape_string() 之类的函数必须在清理时进行硬编码。
如果使用 MySQL 扩展时不存在使用 PDO 的任何其他复杂性,我很想知道。
任何反馈表示赞赏。