2017-02-27 255 views
-1

我已經在MYSQL中安裝了this Levenshtein function。製造商建議使用此:mysql函數的返回結果

select levenshtein('butt', 'but') from test; 
select levenshtein_ratio('butt', 'but') from test; 

我想計算$之間,並在DB每個「名字」項的萊文斯坦比搜索,然後在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>"; 

} 
+0

如果我使用'$查詢= 「選擇萊文斯坦( '對接', '而是')FROM名稱;'和'$行[ '萊文斯坦']',我得到」 通知:未定義指數:萊文斯坦在...「 –

+0

就是這樣!非常感謝 –

回答

0

您需要使用的別名函數返回

SELECT levenshtein('butt', 'but') as levenshtein FROM 

那麼它可以從levenshtein索引訪問。

$row['levenshtein'] 

還要注意:

除了存儲在結果陣列的數字索引中的數據,mysqli_fetch_array()函數也可以存儲在關聯索引數據,但使用的字段名結果集作爲鍵。

所以,如果你不想讓你可以做別名:

$row[1] 

這是不太可讀/維護我雖然。

如果對陣列包含的內容有疑問,可以用print_rvar_dump來檢查。那些會給你指數和數組的值。

0

這個怎麼樣?

<?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 />"; 

}