You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP MySQL搜索中使用两个WHERE子句?含mysqli查询示例

在PHP MySQL(WordPress环境)中结合两个WHERE子句的正确做法

没问题,我来帮你理清楚怎么在PHP MySQL查询里结合固定条件和搜索条件——你方向是对的,用AND就能把两个WHERE条件组合起来,但现有代码里有几个需要修正的细节,还有安全问题得重点注意。

先看你现有代码的问题

  1. 变量解析失效:你用单引号包裹SQL语句,里面的$search不会被PHP解析成实际变量值,会被当作字面量%$search%传给MySQL,导致搜索完全不起作用。
  2. SQL注入风险:直接把$_POST的用户输入拼进SQL语句,恶意用户可以构造特殊输入篡改查询逻辑,甚至窃取、删除数据库数据,这在WordPress环境里尤其危险。

推荐的安全实现方式(WordPress专属)

WordPress的$wpdb类自带安全的查询工具,能自动处理变量转义和注入防护,下面是修正后的代码:

// 先安全获取并过滤用户输入
$search = isset($_POST['cloud_edge']) ? sanitize_text_field($_POST['cloud_edge']) : '';
$cloud_edge = 1;

// 用$wpdb的prepare方法预处理查询,避免注入
$query = $wpdb->prepare(
    "SELECT * FROM media_networks WHERE cloud_edge = %d AND capital_city LIKE %s ORDER BY capital_city",
    $cloud_edge, // %d 对应整数类型参数
    '%' . $wpdb->esc_like($search) . '%' // %s 对应字符串,esc_like处理搜索词里的特殊通配符
);

// 执行查询并获取结果
$network_countries = $wpdb->get_results($query);

代码细节说明:

  • sanitize_text_field():WordPress官方安全函数,过滤用户输入的非法字符,确保输入是纯文本。
  • $wpdb->prepare():自动为变量添加引号和转义,彻底杜绝SQL注入,%d/%s要和后面的变量类型严格对应。
  • $wpdb->esc_like():处理模糊搜索中的特殊字符(比如%、_),避免这些字符被MySQL当作通配符解析,保证搜索结果准确。

原生mysqli环境下的实现示例

如果是在普通PHP mysqli环境中,同样要使用预处理语句来保证安全,示例如下:

$search = isset($_POST['cloud_edge']) ? $_POST['cloud_edge'] : '';
$cloud_edge = 1;

// 假设你已经建立了数据库连接
$conn = mysqli_connect("localhost", "用户名", "密码", "数据库名");

// 预处理查询语句
$stmt = mysqli_prepare($conn, "SELECT * FROM media_networks WHERE cloud_edge = ? AND capital_city LIKE ? ORDER BY capital_city");

// 绑定参数:i表示整数,s表示字符串,对应后面的变量
$search_pattern = '%' . mysqli_real_escape_string($conn, $search) . '%';
mysqli_stmt_bind_param($stmt, "is", $cloud_edge, $search_pattern);

// 执行查询并获取结果
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$network_countries = mysqli_fetch_all($result, MYSQLI_ASSOC);

// 清理资源
mysqli_stmt_close($stmt);
mysqli_close($conn);

核心原则:

无论用哪种环境,永远不要直接把用户输入拼进SQL语句,预处理语句是防护SQL注入的标准做法,也是行业通用的安全规范。

内容的提问来源于stack exchange,提问作者John Bright

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:37:36