我在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;