Php 如何使用mysqli\u real\u escape\u字符串转换特殊字符

Php 如何使用mysqli\u real\u escape\u字符串转换特殊字符,php,mysqli,Php,Mysqli,我在使用mysqli\u real\u escape\u字符串在PHP中存储文本时遇到问题 我要存储的文本: 然后我使用这个方法: 案文改为: tesing+smaple+id 为什么文本会更改?如果我不希望它自动转换,我应该怎么做 请帮助htmlspecialchars将HTML中具有特殊含义的字符转换为实体。如果您想在HTML文档停止时插入一些文本,例如,

我在使用mysqli\u real\u escape\u字符串在PHP中存储文本时遇到问题

我要存储的文本:

然后我使用这个方法:

案文改为:

tesing+smaple+id
为什么文本会更改?如果我不希望它自动转换,我应该怎么做


请帮助

htmlspecialchars将HTML中具有特殊含义的字符转换为实体。如果您想在HTML文档停止时插入一些文本,例如,<等字符被视为标记的开头,并防止XSS,那么这一点非常重要

mysql\u real\u escape\u字符串将mysql SQL查询中具有特殊含义的字符转换为转义符。这允许您将任意字符串插入MySQL数据库,以安全地防止错误和注入。然而,有更好的方法来做同样的事情

试试这个:

$id = mysql_real_escape_string(htmlspecialchars($query['ID']));
echo $id;
最好的方法是在存储之前对值进行base64_编码,并在从数据库提取时对其进行base64_解码。您不会泄露任何信息:

<?php
$myvar = "tesing%2Bsmaple%2Bid";
$vartostore = base64_encode($myvar);
echo $vartostore;
$varfromdb = base64_decode($vartostore);
echo $varfromdb;
$id = mysql_real_escape_string(htmlspecialchars($query['ID']));
echo $id;
<?php
$myvar = "tesing%2Bsmaple%2Bid";
$vartostore = base64_encode($myvar);
echo $vartostore;
$varfromdb = base64_decode($vartostore);
echo $varfromdb;