当我将此代码切换到PDO时,它将停止工作,并且不会发出任何错误

时间:2019-04-23 10:39:56

标签: php mysql pdo

  

为了避免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";
                    };

0 个答案:

没有答案