为了避免SQL注入,我正在尝试在我的网站中使用PDO,就我而言,以下代码并不安全,不是吗? 问题是当我将代码切换到PDO时,没有显示错误,但是 它不起作用。
这是代码。
$q = ucwords($_GET['q']);
$result = mysqli_query($conn, "SELECT src FROM mydb WHERE $q LIKE 1");
$total = mysqli_num_rows($result);
$numRow = bcdiv(($total / 4), '1', 0);
if($numRow < 4){
$numRow = 1;
};
if($row = mysqli_fetch_array($result)){ ?>
<h2>Resultados para la búsqueda <?php echo "$q"?></h2>
<h3>Número de resultados total: <?php echo "$total"?></h3>
<div class="gallery">
<?php do{ ?>
<style>
.gallery{
grid-template-rows: repeat(<?php echo "$numRow" ?>, 10.375em);
}
</style>
<div class="element" id="element"><img src="<?php echo $row['src']; ?>" alt=""></div>
<?php }while($row = mysqli_fetch_array($result));{
} ?>
<?php }else{
echo "No hay resultados para la búsqueda";
};
这是我尝试过的PDO准备好的声明
$stmt = $pdo->prepare("SELECT src FROM memes WHERE :q LIKE 1");
$stmt->bindParam(":q", $q, PDO::PARAM_STR);
$stmt->execute();
$result = $pdo->prepare("SELECT FOUND_ROWS()");
$result->execute();
$total = $result->fetchColumn();
$numRow = bcdiv(($total / 4), '1', 0);
if($numRow < 4){
$numRow = 1;
};
if($row = $stmt->fetch()){
?>
<h2>Resultados para la búsqueda <?php echo "$q"?></h2>
<h3>Número de resultados total: <?php echo "$total"?></h3>
<div class="gallery">
<?php
do{
?>
<style>
.gallery{
grid-template-rows: repeat(<?php echo "$numRow" ?>, 10.375em);
}
</style>
<div class="element" id="element">
<img src="<?php echo $row['src']; ?>" alt="">
</div>
<?php
}while($row = $stmt->fetch());{
}
?>
<?php
}else{
echo "No hay resultados para la búsqueda";
};