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

如何用MYSQLI查询列值包含于指定URL变量的记录?反向通配符用法

方案1(推荐:PHP解析后查询,性能高、逻辑清晰)

你提到的不能用substr/str_replace手动截取字符串,我们可以用PHP官方内置的URL解析函数parse_url实现域名提取,不属于手动硬编码截取的范畴:

// 提取站点URL中的域名部分
$site_url = "https://joestire.com/about/our-team";
$target_domain = parse_url($site_url, PHP_URL_HOST);

// 预处理查询,避免SQL注入
$pdo = new PDO("mysql:host=你的数据库地址;dbname=你的库名;charset=utf8mb4", "账号", "密码");
$stmt = $pdo->prepare("SELECT ID FROM customer_urls WHERE URL = ?");
$stmt->execute([$target_domain]);
$matched_id = $stmt->fetchColumn();

查询到的$matched_id就是对应的域名记录ID。

方案2(纯SQL层面匹配,不需要提前解析域名)

如果确实需要直接在SQL中完成匹配,可以用LIKE拼接匹配规则,替代你写错的IN语法:

SELECT ID FROM customer_urls 
WHERE 
  -- 匹配带路径的URL 比如https://xx.com/xxx
  ? LIKE CONCAT('%://', URL, '/%') 
  -- 匹配根路径的URL 比如https://xx.com
  OR ? LIKE CONCAT('%://', URL)

执行查询时传入两次$site_url作为预处理参数即可。

原语句错误原因

IN语法用于匹配值列表,比如WHERE URL IN ('joestire.com', 'peterstire.com'),你直接传入完整URL字符串既不符合IN的语法要求,也没有匹配逻辑,自然无法运行。

内容的提问来源于stack exchange,提问作者Trey Tyler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:06