如何使用准备好的语句直接在SQL结果中突出显示搜索关键字(注入html代码)?

How to highlight the search keyword (inject html code) directly in the SQL results using prepared statements?

提问人:Aurélien Grimpard 提问时间:8/22/2023 最后编辑:Your Common SenseAurélien Grimpard 更新时间:8/22/2023 访问量:35

问:

编辑:我的问题不是如何突出显示搜索结果的重复,因为我正在尝试使用查询而不是查询结果。我知道我可以使用查询结果,我什至尝试过,但这会产生其他问题,包括大小写和强调。所以,如果有一种方法可以用mysql来做到这一点(这是我的问题),有点像这样的Mysql:选择带有like但带有PDO准备语句的查询...请保持这个问题的开放性!

我的数据库“mydb”中有这种数据:

id | name
---------
1  | abcdef
2  | bcdefg
3  | cdefgh
4  | defghi
5  | efghij

我做了一个PDO准备的查询,如下所示:

$q = "SELECT * FROM `mydb` WHERE name LIKE :search ;";
$res = $cnx->prepare($q);
$res->bindValue(':search', '%'.$_POST['search'].'%');
$res->execute();

在我的示例中,所以我得到了这些结果:$_POST['search'] = 'defgh'

id | name
---------
3  | cdefgh
4  | defghi

我想知道是否有办法使用 mysql 和 PDO 注入 html 代码,该代码直接在结果中包含使用“LIKE”语句搜索的字符串?

所以结果将是:

id | name   | html
----------------
3  | cdefgh | c<mark>defgh</mark>
4  | defghi | <mark>defgh</mark>i
php mysql pdo 准备语句 sql-like

评论

0赞 Your Common Sense 8/22/2023
如果您真的需要在查询中正确执行此操作,也可以替换(),但我想知道为什么有人会想这样做
1赞 Your Common Sense 8/22/2023
你在这里到底不明白什么?怎么写?SELECT mydb.*, replace(name, :search, concat('<mark>', :search,'</mark>')) as name FROM mydb WHERE name LIKE :search
0赞 Ergest Basha 8/22/2023
@YourCommonSense更好的副本可能是如何在 PDO 准备语句中使用 LIKE 子句?
0赞 Your Common Sense 8/22/2023
@ErgestBasha OP 已经知道如何在 PDO 准备语句中使用 LIKE 子句
1赞 Aurélien Grimpard 8/22/2023
其实这就是你的答案。无论如何,感谢您的帮助:)

答: 暂无答案