gpt4 book ai didi

php - 如何找到与字符串匹配的数据库行?

转载 作者:行者123 更新时间:2023-11-29 03:17:22 26 4
gpt4 key购买 nike

我有一个包含 100K 行和 100 个项目的数组的数据库表。我需要查找是否在我的用户表用户名行中找到数组项。

我的数据库表用户

| id | username | fullname |
1 John John Smith
2 Elliot Jim Elliot
3 Max Max Richard

我的数组看起来像这样

[
{
string: 'Hello, this is Elliot from downtown Las Vegas!'
},

{
string: 'Hey how are you?'
}
]

我的想法是对我的用户表(10 万条记录)中的每一行执行一个 foreach 循环,并查找它是否与我的数组匹配,但它太慢了。

foreach ($MyArray as $Array) {
foreach ($dbrows as $dbrow) {
if (strpos($Array['string'], $dbrow['username']) !== false) {
echo 'found it!';

break;
}
}
}

最佳答案

这会有点碰运气,因为您可能会发现用户使用各种与普通单词匹配的奇怪名称,这种方法将输入拆分为单词,然后使用它们形成 in 子句搜索数据库。所以它只查看匹配的记录而不是所有记录...

$search = 'Hello, this is Elliot from downtown Las a1 Vegas!';
$words = str_word_count($search, 1);
$bind = str_repeat("?,", count($words));
$bind = trim($bind, ",");

$query = $conn->prepare("select * from users where username in ($bind)" );
$types = str_repeat("s", count($words));
$query->bind_param($types, ...$words);
$query->execute();
$res = $query->get_result();
while($row = $res->fetch_assoc()) {
// Process result
}

它还使用准备好的语句,这是所有 $bind$types 处理的用武之地。如果您查看 $query 您将看到它是如何构建的。

关于php - 如何找到与字符串匹配的数据库行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52912433/

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