我有一些图片是用PHP从MySQL数据库输出到页面上的.输出它们的while循环包括一个联接,因为它从两个数据库表(imageposts表和users表)获取数据.

使用当前输出运行查询,但由于没有用户输入,因此使用以下代码:

<?php
// IMAGE GRID JOIN
$stmt = $connection->query("SELECT imgp.*, u.id, u.firstname, u.lastname
FROM imageposts AS imgp
INNER JOIN users AS u ON imgp.user_id = u.id");

while ($row = $stmt->fetch()) {
    // from imageposts table
    $db_image_id = htmlspecialchars($row['image_id']);
    $db_image_title = htmlspecialchars($row['image_title']);
    $db_image_filename = htmlspecialchars($row['filename']);
    $db_ext = htmlspecialchars($row['file_extension']);
    $db_username = htmlspecialchars($row['username']);

    // from users table
    $db_firstname = htmlspecialchars($row['firstname']);
    $db_lastname = htmlspecialchars($row['lastname']);

?>

-- HTML OUTPUT

<?php } ?>

The Issue

我还在为这个网站设置我的第一个搜索表单,当图像被输出时,我想让它们输入与上面相同的信息(除了搜索查询),但是因为它是一个搜索表单,有用户输入,我需要使用一个准备好的声明,我无法理解如何处理这个问题?

搜索将在imageposts表的image_title列上进行,因此就sudo代码而言:

$searchSQL = "SELECT * FROM `imageposts` WHERE `image_title` LIKE %$searchQuery% ";

其中,$searchQuery是搜索输入字段的值.

但我如何将其与问题第一部分中的查询结合起来,并使用一个预先准备好的语句来保证安全性呢?

MySQL会是这样吗?:

"SELECT imgp.*, u.id, u.firstname, u.lastname
FROM imageposts AS imgp
INNER JOIN users AS u ON imgp.user_id = u.id WHERE image_title LIKE %$searchQuery%"

如果是这样的话,我该如何确保$searchQuery号上准备好的声明的安全性?

推荐答案

备选案文1:

$sql = "SELECT imgp.*, u.id, u.firstname, u.lastname
  FROM imageposts AS imgp
  INNER JOIN users AS u ON imgp.user_id = u.id 
  WHERE image_title LIKE CONCAT('%', ?, '%')";
$stmt = $connection->prepare($sql);
$stmt->execute([$searchQuery]);

备选案文2:

$sql = "SELECT imgp.*, u.id, u.firstname, u.lastname
  FROM imageposts AS imgp
  INNER JOIN users AS u ON imgp.user_id = u.id 
  WHERE image_title LIKE ?";
$stmt = $connection->prepare($sql);
$stmt->execute(["%{$searchQuery}%"]);

Php相关问答推荐

向在添加到购物车上动态创建的WooCommerce产品添加发货类别

致命错误:未捕获错误:Google\Auth\HttpHandler\HttpHandlerFactory::build()

WooCommerce管理订单列表自定义列不显示值

获取要删除的图像的公共ID

如何将隐式乘法添加到PHPPEG基本计算器语法中?

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

Select 本地提货时隐藏WooCommerce显示的发货成本

curl_close()未从PHP 8开始写入CURLOPT_COOKIEJAR会话文件

将自定义字段添加到管理产品中 WooCommerce 3.2+ 中的快速编辑

在 php 中生成 MAC ISO/IEC 9797-1

图像未在 Laravel Ajax Crud 中显示

PHP 创建 CSV 文件并用波斯语写入

WooCommerce 订单和邮箱通知的自定义产品描述

如何在WooCommerce中为访客购买者分配自定义客户代码

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

显示时间范围内的可用空位,同时考虑已预订的空位

使用 GROUP_CONCAT 规范化/转置来自查询的数据

如何从 PHP 中的字符串位置排除图像扩展名

如何在运行 update_post_meta 后更新 wp_wc_product_attributes_lookup 表?

PHP路由不重定向