levenshtein()
で使用するための「最良の」オプションを見つけようとしていますPHP
。
ユーザーが新しい顧客をDBに入力するときに、PDOステートメントを使用しています。
私がやりたいのは、新しい顧客が追加される前に、クエリ検索を行い、その顧客がデータベースにすでに存在するかどうかを確認して、重複エントリの可能性を回避することです。MATCH/AGAINST
どちらの場合もお客様の入力が異なる可能性があるため、使用できません。
これにより、データベースに対して名がチェックされます。
$input1 = $_POST['FIRSTNAME'];
$result = array();
$count=1;
$find = $dbh->query('SELECT BillingFirstName FROM Customers');
while ($row = $find->fetch (PDO::FETCH_ASSOC))
{
$fn = $row['BillingFirstName'];
array_push($result, $fn);
}
foreach ($result as $word) {
echo $word.'<br>';
$shortest = -1;
$lev = levenshtein($input1, $word);
if ($lev == 0) {
$closest = $word;
$shortest = 0;
break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest = $word;
$shortest = $lev;
}
}
echo "Input word: $input1\n";
if ($shortest == 0) {
echo "Exact match found: $closest\n";
} else {
echo "Did you mean: $closest?\n";
}
姓、住所、州、郵便番号など、残りの詳細をどのように追加しますか。
さらに追加することはできますか、それとも配列を作成してアドレスの各部分でループする必要がありますか?