返回mysql函数的结果
Posted
技术标签:
【中文标题】返回mysql函数的结果【英文标题】:Return result of an mysql function 【发布时间】:2017-07-18 02:43:58 【问题描述】:我已经在 mysql 中安装了this Levenshtein function。制造商建议使用这个:
select levenshtein('butt', 'but') from test;
select levenshtein_ratio('butt', 'but') from test;
我想计算 $search 和数据库中每个“名称”条目之间的 Levenshtein Ratio,然后在 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>";
【问题讨论】:
如果我使用$query = "SELECT levenshtein('butt', 'but') FROM names;
和 $row['levenshtein']
,我会得到“注意:未定义的索引:levenshtein in...”
就是这样!非常感谢
【参考方案1】:
你需要给函数返回一个别名
SELECT levenshtein('butt', 'but') as levenshtein FROM
然后可以从levenshtein
索引访问它。
$row['levenshtein']
另请注意:
除了将数据存储在结果数组的数字索引中,mysqli_fetch_array() 函数还可以将数据存储在关联索引中,使用结果集的字段名称作为键。
因此,如果您不想要别名,您可以这样做:
$row[1]
不过,这对我来说可读性/可维护性较差。
如果对数组包含的内容有疑问,可以使用print_r
或var_dump
进行检查。这些将为您提供数组具有的索引和值。
【讨论】:
【参考方案2】:这个怎么样?
<?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 />";
【讨论】:
以上是关于返回mysql函数的结果的主要内容,如果未能解决你的问题,请参考以下文章