我对 PHP 有点菜鸟,如果这是非常基础的,我深表歉意。以前可能有人问过这个问题,但我找不到另一个与我的情况类似的帖子。
我网站上的一个 URL 示例是 example.com/read.php?id=1。 read.php 文件包含以下代码:
<?php
$id = $_GET['id'];
$sql = mysqli_query($con, "SELECT * FROM pages WHERE id='$id'");
?>
我知道我需要对此进行某种清理,但在这种情况下最好的做法是什么?性能也很关键,所以我不想添加不必要的代码。
最简单的解决方案是将变量强制为整数。任何非数字都被剥离,该值可以安全地用作数字值。
$id = (int) $_GET['id'];
$sql = mysqli_query($con, "SELECT * FROM pages WHERE id=$id");
我同意其他评论者的观点,即使用带参数的准备好的查询更好(更快、更安全)。然后它看起来像这样:
$id = (int) $_GET['id'];
$stmt = mysqli_prepare($con, "SELECT * FROM pages WHERE id=?");
mysqli_stmt_bind_param($stmt, "i", $id);