【问题标题】:I wanna ask how to change this mysqli code to PDO? other page cannot solve my question [duplicate]我想问如何将此mysqli代码更改为PDO?其他页面无法解决我的问题[重复]
【发布时间】:2021-04-06 21:19:38
【问题描述】:

我正在做一个搜索功能,我不知道如何将这个mysqli代码更改为PDO代码(同时防止SQL注入)。希望大家能帮帮我。

<?php
if(isset($_POST['submit'])) {
    $search = $_POST['search'];

    $query = "SELECT * FROM posts WHERE post_tags LIKE '%$search%'";
    $search_query = mysqli_query($connection, $query);

    if(!$search_query) {
        die("QUERY FAILED" . mysqli_error($connection));
    }

    $count = mysqli_num_rows($search_query);
}
?>

下面是我的 PDO 代码:

<?php
$search = $_POST['search'];
$search = "%$search%";

$sql = 'SELECT * FROM posts WHERE post_tags LIKE :search';
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':search', $search);
$stmt->execute();

if(!$stmt) {
    die("QUERY FAILED" . $pdo->errorInfo());
}

$count = $stmt->fetchColumn();
?>

【问题讨论】:

  • 该代码看起来并没有太大问题。你认为问题是什么?它运行了吗?
  • 您可能需要考虑使用-&gt;fetchObject(),这样每次调用都会得到一个完整的行,而不是-&gt;fetchColumn() 中的单个列,尽管您可能是有意这样做的。甚至是-&gt;fetchAll(),这样您就可以将所有行返回到一个数组中。
  • 供参考:SQL Injection
  • 多谢赐教,我用rowCount()解决了我的问题,谢谢!
  • 好的,仍然不确定您的问题是什么,但很高兴它已解决

标签: php mysqli pdo


【解决方案1】:
if(isset($_POST['submit'])) {
    
    $search = $_POST['search'];
    $search = "%$search%";

    $sql = 'SELECT * FROM posts WHERE post_tags LIKE :search';
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':search', $search);
    $stmt->execute();

    if(!$stmt) {
        die("QUERY FAILED" . $pdo->errorInfo());
    }

   
    $count = $stmt->rowCount();

    if($count == 0) {
        echo "<h1> NO RESULT</h1>";
    } else {
        .....

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 2013-05-23
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2016-11-16
    • 2019-12-09
    • 2021-04-25
    • 2013-01-23
    相关资源
    最近更新 更多