我有以下数据作为示例:
$a = addslashes('hello\'s');
$b = serialize($a);
// As you know, $b looks like this s:8:"hello\'s";
Run Code Online (Sandbox Code Playgroud)
现在,当我向MySQL插入$ b时,数据现在看起来像这样:8:MySQL中的"hello".MySQL删除\,现在我有一个无效的序列化数据.
解决这个问题的最佳方法是什么?谢谢
要转义参数以进入SQL查询,您不使用addslashes,但是mysql_real_escape_string.
例:
<?php
$param = mysql_real_escape_string($_GET['param']);
$query = "SELECT f1, f2 FROM atable WHERE f3 = '$param' ";
// these single quotes here are essential !! ^ ^
// if you leave out the quotes you **will** suffer SQL-injection.
Run Code Online (Sandbox Code Playgroud)
这是转义SQL参数的正确方法.
或者甚至更好地使用PDO准备好的语句,然后你根本不必逃避.
| 归档时间: |
|
| 查看次数: |
7285 次 |
| 最近记录: |