【发布时间】:2014-12-13 21:20:28
【问题描述】:
表格
<FORM method="post" action="for.php">
<input type="text" name="first" placeholder="first"><br>
<input type="text" name="last" placeholder="last">
<input type="submit">
</FORM>
表单处理
在处理表单时如何使用 SQL 注入预防方法。我检查了这个链接,读后很困惑:How can I prevent SQL injection in PHP?
<?php
$db_username = "sanoj";
$db_password = "123456";
try {
#connection
$conn = new PDO('mysql:host=localhost;dbname=localtest', $db_username, $db_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $conn->prepare('INSERT INTO test (first, last) VALUES (:first, :last)');
$first = mysql_real_escape_string($_POST['first']);
$last = mysql_real_escape_string($_POST['last']);
$data->execute(array(':first' => $first, ':last' => $last));
#exception handiling
} catch (PDOException $e) {
echo $e->getMessage();
}
?>
错误
当我运行上面的代码时,我得到了这个错误
已弃用:mysql_real_escape_string():mysql 扩展已弃用,将来将被删除:在第 11 行的 C:\Users\logon\Documents\NetBeansProjects\teste local\for.php 中使用 mysqli 或 PDO 代替
【问题讨论】:
-
这只是您使用
mysql_real_escape_string()时的通知,而deprecated您可以将任何东西插入数据库 -
@Arif_suhail_123 数据已插入,但出现上述错误
-
检查答案。希望它能解释一些事情