【问题标题】:Return result of an mysql function返回mysql函数的结果
【发布时间】: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...”
  • 就是这样!非常感谢

标签: php mysql function mysqli levenshtein-distance


【解决方案1】:

你需要给函数返回一个别名

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

然后可以从levenshtein索引访问它。

$row['levenshtein']

另请注意:

除了将数据存储在结果数组的数字索引中,mysqli_fetch_array() 函数还可以将数据存储在关联索引中,使用结果集的字段名称作为键。

因此,如果您不想要别名,您可以这样做:

$row[1]

不过,这对我来说可读性/可维护性较差。

如果对数组包含的内容有疑问,可以使用print_rvar_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 />";
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-29
      • 2015-07-15
      • 2011-12-27
      • 2012-12-19
      • 1970-01-01
      相关资源
      最近更新 更多