我试图在标题中准确地解释我的问题。我可以在mysql查询本身中通过 在查询中包围匹配的单词吗? MySQL查询是:
选择id,FirstName,LastName,addcomments WHERE MATCH(FirstName,LastName,addcomments) 反对('一些示例文本'WITH QUERY EXPANSION)
mysql的结果应该是:
id | FirstName | LastName | addcomments
1 |<b>some</b> name | lastname <b>text</b> | comments have <b>some sample text</b> inside
任何帮助都将深表感谢
答案 0 :(得分:3)
这是一个非问题,因为MySQL根本没有格式化结果,它将数据集传递给应用程序。然后由应用程序根据数据执行它想要的操作。
如果您使用的是PHP,则可以在结果上使用str_replace
将关键字替换为关键字的粗体版本
此处还存在安全问题 - 如果您的数据库返回HTML,则必须使用编码输出内容。这意味着如果有人设法将恶意记录注入您的数据库,您的网站可能会提供XSS攻击或其他令人讨厌的代码
答案 1 :(得分:1)
根据输出的显示位置,您可能会发现这会产生混合结果。例如,正确转义文本使其在命令行中显示为粗体或彩色与在html,rtf或pdf等中以粗体显示不同。
如果您使用任何用于显示输出的问题解决问题,您将获得更可预测和可维护的结果。
答案 2 :(得分:1)
感谢kris的回复。我同意mysql将返回任何应用程序可以使用的通用结果。但是我可以为同样的效果编写一个mysql函数吗?
另外,我尝试为此编写php函数,但它不起作用:
$searchitems=explode(" ", $trimmed);
$totalSearchItems = count($searchitems);
while ($row= mysql_fetch_array($result))
{
for($i=0;$i<$totalSearchItems;$i++)
{
str_replace($searchitems[$i], '<b>'.$searchitems[$i].'</b>', $row);
}
//Display $row
}