返回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_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 />";


【讨论】:

以上是关于返回mysql函数的结果的主要内容,如果未能解决你的问题,请参考以下文章

试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined

Promise mysql返回未定义,如何让函数等待结果

mysql怎么返回数组

带有mysql查询的异步函数不会返回查询结果node.js

MySQL 说:#1415 - 不允许从函数返回结果集

PHP mysql_num_rows() 函数 返回结果集中行的数目。