gpt4 book ai didi

php - 通过逗号分隔搜索不同的列

转载 作者:行者123 更新时间:2023-11-29 11:42:12 25 4
gpt4 key购买 nike

我有一个表,其中包含姓名、电子邮件地址、号码等信息。 My Database

假设我有 30 个同名联系人,但他们都住在不同的城市。如何拆分逗号并将其替换为 and ...

示例SELECT * WHERE 名称 %$searchString% 或城市 %$searchString%...

现在如果$searchString包含逗号

SELECT * WHERE 名称 %$searchString% 或城市 %$searchString%... AND SELECT * WHERE 名称 %$searchString2% 或城市 %$searchString2%...

$searchString2 包含用逗号分隔的信息。

更新

我想一遍又一遍地搜索每一行,次数与逗号存在的次数一样。抱歉我无法解释自己

最佳答案

这取决于您是否要返回名称或城市与搜索值完全匹配 (=) 的行,或者名称或城市的任何部分与搜索值匹配的行搜索值 (LIKE)。

无论您需要哪一个,您都可以首先将搜索字符串转换为字符串数组,如下所示:

$strings = array_map('trim', explode(',', $searchString));

array_map('trim'... 确保您不会尝试匹配逗号分隔搜索字符串中逗号前后的任何空格。

以下是如何在 PDO 中使用准备好的语句执行查询的示例。首先,使用 IN 进行完全匹配:

$phs = rtrim(str_repeat('?,', count($strings)),',');
$stmt = $pdo->prepare("SELECT * FROM your_table WHERE name IN ($phs) OR city IN ($phs)");
// double the string values to us in both INs
$values = array_merge($strings, $strings);
$stmt->execute($values);

以及使用LIKE进行部分匹配:

$sql = '';
foreach ($strings as $string) {
$sql .= ' name LIKE ? OR city LIKE ? OR';
$values[] = $string;
$values[] = $string;
}
$stmt = $pdo->prepare('SELECT * FROM your_table WHERE' . rtrim($sql, ' OR'));
$stmt->execute($values);

关于php - 通过逗号分隔搜索不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com