Я установил эта функция Левенштейна в MYSQL. Производитель советует использовать это:
select levenshtein('butt', 'but') from test;
select levenshtein_ratio('butt', 'but') from test;
Я хочу вычислить коэффициент Левенштейна между $ search и каждой записью «name» в БД, а затем отобразить его в PHP.
Как я могу это сделать? заранее спасибо
$search = "Paul"; // The string I want compared to each DB entry
$query = "SELECT name, ??? FROM names"; // What's the MYSQL I need to use?
$response = @mysqli_query($dbc, $query);
while($row = mysqli_fetch_array($response)){
echo "Levenshtein Ratio: ".$row['???'];
echo "<br>";
}
Вам нужно использовать псевдоним, возвращаемый функцией
SELECT levenshtein('butt', 'but') as levenshtein FROM
тогда к нему можно получить доступ из levenshtein
индекс.
$row['levenshtein']
Также обратите внимание:
Помимо сохранения данных в числовых индексах массива результатов, функция mysqli_fetch_array () может также сохранять данные в ассоциативных индексах, используя имена полей результирующего набора в качестве ключей.
Так что, если вы не хотите псевдоним, вы можете сделать:
$row[1]
это менее читабельно / ремонтопригодно для меня, хотя.
Если вы сомневаетесь в том, что содержит массив, вы можете проверить это с print_r
или же var_dump
, Они дадут вам индексы и значения, которые имеет массив.
Как насчет этого ?
<?php
$search = "Paul"; // The string I want compared to each DB entry
$query = "SELECT name, levenshtein(name, '".mysqli_real_escape_string ($dbc, $search)."') AS result FROM names";
$result = @mysqli_query($dbc, $query);
while($row = mysqli_fetch_array($result)){
echo "Levenshtein Ratio for ".$row['name'].' : '.$row['result']."<br />";
}