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