【发布时间】:2016-04-18 01:46:35
【问题描述】:
我的代码中有一个 SQL 查询,我想将其转换为准备好的语句以阻止 SQL 注入等漏洞。所以这就是我想要转换的:
<?php
$query = "SELECT * from `wp_posts` WHERE ID=$pid ";
$result = mysqli_query($link, $query);
//$id=$row['Gallery_Id'];
while($row = mysqli_fetch_array($result)){
?>
<h2 align="center"> <?php echo $row['post_title']; ?> </h2><br>
<div class="paracenter">
<p id="cont"><?php echo $row['post_content']; ?></p>
<hr color="black" width="10%">
</div>
<?php } ?>
这是我尝试过的,但它不起作用。
$query = "SELECT * from `wp_posts` WHERE ID=? ";
$stmt = mysqli_prepare($link, $query);
if($stmt){
mysqli_stmt_bind_param($stmt, "i", $pid);
mysqli_stmt_bind_result($stmt, $dbpid);
mysqli_stmt_execute($stmt);
mysqli_stmt_fetch($stmt);
}
$result = mysqli_query($link, $query);
//$id=$row['Gallery_Id'];
while($row = mysqli_stmt_fetch($result)){
?>
<h2 align="center"> <?php echo $row['post_title']; ?> </h2><br>
<div class="paracenter">
<p id="cont"><?php echo $row['post_content']; ?></p>
<hr color="black" width="10%">
</div>
<?php } ?>
网上几乎所有的例子都没有使用我使用的程序方法。我该如何纠正这个问题?
【问题讨论】:
-
手册有OOP和程序风格。 php.net/manual/en/mysqli-stmt.bind-param.php目前发生了什么
-
是的,那里的例子只是使用定义的变量来输出。没有提到当查询为
SELECT *@chris85 时如何获取值 -
php.net/manual/en/mysqli.error.php 并将其应用于您的查询。
-
你搞砸了,你在混合
*i_query()和准备好的语句api -
@Ghost,你能告诉我如何纠正它吗?
标签: php stored-procedures mysqli prepared-statement procedural