当我将变量发布到数据库时,当然,我使用mysql_real_escape_string
. 这样特殊字符就应该进入数据库。
当我从数据库中读取这个变量时,我再次使用 mysql_real_escape_string 和stripslashes
:
$var = stripslashes(mysql_real_escape_string($record['rowname']));
否则它会在引号前给我斜杠。
当我使用$var
上面提到的这个并想要回应它时,我很简单,echo "$var"
因为它已经被剥离和转义了,对吧?
此外,如果我在一个变量上使用stripslashes
+ mysql_real_escape_string
,然后在数据库中再次发布这个相同的变量,就mysql_real_escape_string
足够了吗?还是我需要stripslashes
再次使用这个变量?
总结:
据我所知这是如何工作的:
- 在 mysql 中使用数据时
mysql_real_escape
每次都使用:当通过变量读取查询时,就像将变量发布到数据库一样。 stripslashes
在回显转义变量时使用。- 如果您想
stripslashes
再次向数据库发布和转义变量,则不需要再次删除它。
我想念htmlspecialchars
吗?
编辑
所以这一切都错了吗?
while( $record=mysql_fetch_array($result) )
{
$custid=mysql_real_escape_string($record['custid']);
$custsurname=mysql_real_escape_string($record['custsurname']);
$custmidname=mysql_real_escape_string($record['custmidname']);
$custforename=mysql_real_escape_string($record['custforename']);
$custcountry=stripslashes(mysql_real_escape_string($record['custcountry'])); }