何时需要准备好的语句
当您最初使用 mysql_connect 和 mysql_query 来管理数据库交互时,对 SQL 注入的担忧促使您进行调查准备好的陈述。然而,出现了一个常见的误解:准备好的语句只是保护用户输入所必需的吗?
为什么你应该始终使用准备好的语句
答案是响亮的:始终使用准备好的语句声明,无一例外。即使您在使用 mysql_num_rows 时没有明显面临黑客风险,由于以下原因,使用准备好的语句也更优越:
准备好的语句如何工作
准备好的语句单独传输查询和数据,允许数据库将它们作为一个事务执行。这种保护措施比连接查询和数据要强大得多,这是使用 mysql_* 函数和渲染容易受到 SQL 注入的数据库的做法。
在 PHP 库中使用准备好的语句
通过 PDO,您可以使用以下说明性代码来利用准备好的语句:
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?,?)"); $stmt->execute([$name, $value]);
With MySQLi,代码如下:
$dbh->execute_query("INSERT INTO REGISTRY (name, value) VALUES (?,?)", [$name, $value]);
其他资源
以上是我应该在数据库交互中始终使用准备好的语句吗?的详细内容。更多信息请关注PHP中文网其他相关文章!