提问人:Aurélien Grimpard 提问时间:8/22/2023 最后编辑:Your Common SenseAurélien Grimpard 更新时间:8/22/2023 访问量:35
如何使用准备好的语句直接在SQL结果中突出显示搜索关键字(注入html代码)?
How to highlight the search keyword (inject html code) directly in the SQL results using prepared statements?
问:
编辑:我的问题不是如何突出显示搜索结果的重复,因为我正在尝试使用查询而不是查询结果。我知道我可以使用查询结果,我什至尝试过,但这会产生其他问题,包括大小写和强调。所以,如果有一种方法可以用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
答: 暂无答案
评论
SELECT mydb.*, replace(name, :search, concat('<mark>', :search,'</mark>')) as name FROM mydb WHERE name LIKE :search