$postid = $_GET['p'];
$stmt = $conn->prepare("SELECT * FROM posts WHERE post_id=:postid");
$stmt->bindValue(':postid', $postid);
$stmt->execute();
while($postRows = mysqli_fetch_assoc($stmt)){
$posts[] = $postRows;
}
上面的代码不起作用。
通常我会这样做:
$postid = mysqli_real_escape_string($conn,$_GET['p']);
$result = mysqli_query($conn,"SELECT * FROM posts WHERE post_id='$postid'");
while($postRows = mysqli_fetch_assoc($result)){
$posts[] = $postRows;
}
这对我有用。
我似乎无法理解这个问题,因为在线解释在实际解释如何执行这些操作方面做得很差,所以我一直使用 mysqli_real_escape_string
代替,但我知道它可能很容易受到攻击。
谁能帮助我了解如何正确执行这些查询?
最佳答案
您可以尝试此代码
$stmt = $conn->prepare("SELECT * FROM posts WHERE post_id=:postid");
$stmt->bindValue(':postid', $postid, PDO::PARAM_INT);
$stmt->execute();
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);
关于php - PHP 中的参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698985/