安全表数据项PHP/PDO/MySQL
我正在努力学习PDO的基本原理。我已经构建了以下将数据插入到表中的方法,但我希望得到关于这是否安全或是否可以做得更好的反馈 我的post变量是否需要像使用安全表数据项PHP/PDO/MySQL,php,mysql,pdo,Php,Mysql,Pdo,我正在努力学习PDO的基本原理。我已经构建了以下将数据插入到表中的方法,但我希望得到关于这是否安全或是否可以做得更好的反馈 我的post变量是否需要像使用mysql\u real\u escape\u string()一样进行转义 这是不安全的——您没有采取任何措施阻止从用户提供的$\u POST值注入SQL。您应该使用准备好的语句并将VALE绑定到它们: $conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb
mysql\u real\u escape\u string()
一样进行转义
这是不安全的——您没有采取任何措施阻止从用户提供的$\u POST值注入SQL。您应该使用准备好的语句并将VALE绑定到它们:
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO `directory` (`First_Name`,`Surname`,`Nicknames`,`Age`)
VALUES (:firstname ,:surname,:nicknames ,:age) ";
$statement = $conn->prepare($sql);
$statement->bindValue(":firstname", $firstname);
$statement->bindValue(":surename", $surename);
$statement->bindValue(":nicknames", $nicknames);
$statement->bindValue(":age", $age);
$count = $statement->execute();
问这类问题最好的地方是。话虽如此,不……不安全。了解如何使用准备好的语句:谢谢@ray,我还需要首先使用我的post值定义$firstname等变量吗$firstname=$_POST['First_Name']$姓氏=$_POST[‘姓氏’]$昵称=$_POST['昵称]$年龄=$_POST[“年龄”]@Liam是的,我假设在创建连接之前,一切都在进行中。此外,这些都在try/catch块中。
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO `directory` (`First_Name`,`Surname`,`Nicknames`,`Age`)
VALUES (:firstname ,:surname,:nicknames ,:age) ";
$statement = $conn->prepare($sql);
$statement->bindValue(":firstname", $firstname);
$statement->bindValue(":surename", $surename);
$statement->bindValue(":nicknames", $nicknames);
$statement->bindValue(":age", $age);
$count = $statement->execute();