无法在我的代码中获取规范的语句,此处是php niewbie

问题描述 投票:-1回答:1

我想使用帖子名称(来自页面URL的$ post变量)从MySQL DB获取帖子内容。正常的语句可以正常工作,但是我试图从SQL注入中保护它的尝试却失败了。由于这是我第一次尝试规范语句,因此无法找到失败的原因。在下面的代码中,注释掉的部分是实际起作用并带来结果的部分。

<?php {
$post = htmlspecialchars($_GET["post"]);
$stmt = $mysqli->prepare("SELECT postcontent FROM posts WHERE postCN = ? ");
$stmt->bind_param("s", $post);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
//$result = mysqli_query($conn, "SELECT postcontent FROM posts WHERE postCN='$post'");
//$row = mysqli_fetch_assoc($result);
//if (mysqli_num_rows($result) > 0) {
if($result->num_rows > 0) {
  echo $row['postcontent']; ?>
  <a class="btn btn-primary" href="<?php echo $siteurl ?>" role="button">Exit</a>
  <?php }
else {
  echo "there is no such post" ;
  header( "refresh:2; $siteurl" );
}
$stmt->close();
}?>

编辑:失败定义:我没有得到空白页(这意味着它可能不是拼写错误),但是我仍然没有得到结果。帖子内容或“没有此类帖子”回显。与数据库的连接正在工作,因为注释掉的部分给出了结果

php mysqli prepared-statement
1个回答
-1
投票

[正如@CID提到的那样,我的错误是我将连接名称从$conn更改为$mysqli

正确的陈述是:

$stmt = $conn->prepare("SELECT postcontent FROM posts WHERE postCN = ? ");
© www.soinside.com 2019 - 2024. All rights reserved.