vau*_*boy 3 php mysql escaping
据说为了防止SQL注入,应该过滤输入数据,例如.使用addslashes或mysql_real_escape_string取决于使用的连接模块
但是,使用addslashes将使用addslashes转义的数据保存到数据库中,因此用户姓氏将保存为O \'Reilly而不是O'Reilly.需要使用stripslashes正确显示它.
那么如何使用addslashes并保存到数据库中而不用斜杠?它实际上是应该做的吗?
你不要使用addslashes
你使用适当的DB特定的转义函数mysql_real_escape_string
.
如果您正在使用PDO,那么使用预准备语句将作为绑定过程的一部分转义变量.在这种情况下,您需要做的就是:
$pdo = new PDO($dsn, $user, $name);
$stmt = $pdo->prepare('INSERT INTO your_table (col1, col2,col3) VALUES (?, ?, ?)');
$stmt->execute(array('value 1', 'value 2', 'value 3');
Run Code Online (Sandbox Code Playgroud)
或者为了额外的可读性和更高的重用性,您可以使用命名参数:
$pdo = new PDO($dsn, $user, $name);
$stmt = $pdo->prepare('INSERT INTO your_table (col1, col2,col3) VALUES (:col1, :col2, :col3)');
$stmt->execute(array(':col1' =>'value 1', ':col2' =>'value 2', ':col3' =>'value 3');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3078 次 |
最近记录: |