如何使用mysqli_real_escape_string转换特殊字符


How can I convert the special character by using mysqli_real_escape_string

我在PHP 中使用mysqli_real_escape_string存储文本时遇到问题

我想存储的文本:

tesing%2Bsmaple%2Bid

然后我使用方法:

$id = mysqli_real_escape_string($con, $query['ID']);
echo $id;

文本更改为:

tesing+smaple+id

为什么文本会更改?如果我不希望它自动转换,该怎么办?

请帮助

htmlspecialchar将HTML中具有特殊含义的字符转换为实体。如果您有一些文本要插入到HTML文档中(例如,当它停止将<等字符作为标记的开头并防止XSS时),这一点至关重要。

mysql_real_sescape_string将mysql SQL查询中具有特殊含义的字符转换为转义符。这允许您将任意字符串安全地插入MySQL数据库(防止错误和注入。然而,还有更好的方法可以做到这一点。

试试这个:

$id = mysql_real_escape_string(htmlspecialchars($query['ID']));
echo $id;

最好的方法是在存储之前base64_encode()值,在从数据库中提取时base64_decode()值。你不会泄露任何信息:)

<?php
$myvar = "tesing%2Bsmaple%2Bid";
$vartostore = base64_encode($myvar);
echo $vartostore;
$varfromdb = base64_decode($vartostore);
echo $varfromdb;