如何安全地检索数据以防止sql注入


How to retrieve data safe for prevent sql injections

我有我的数据库,正在检索数据,如下所示。但我需要更安全地检索它们,以防sql注入。在我的脚本中,我得到了下面这样的所有字段,并在我想显示字段的地方进行了回显。请告诉我一个安全的方法来得到他们。请帮帮我,任何帮助都非常感谢。我想使用while函数来检索所有的数据。请帮我

 <?php
 $getdata ="SELECT * FROM tblname ODER BY ";
$result = mysql_query($getdata);
$row = mysql_fetch_array($result);
$bookName    = $row['bookName'];
$timestamp  = $row['timestamp'];
$Country    = $row['Country'];
$Category   = $row['Category'];
$Price    = $row['Price'];
$Photo1name = $row['Photo1name'];
   ?>

SQL injection只能在使用用户输入的情况下执行
所以当您从数据库中读取时,使用它是安全的。对于您的代码,您必须使用mysql_real_escape_string,但我建议使用PDO及其准备好的语句来自动转义值。

$sth = $dbh->prepare('SELECT * FROM tblname WHERE name = :name ORDER BY');
$sth->execute([':name' => $_POST['name']]);
$result = $sth->fetchAll();

要净化输出,请尝试使用htmlentitiesstrip_tags函数。

为了防止SQL注入,您必须转义值:

$pdo = PDO('mysql:host=localhost;dbname=test', 'root', 'iAmD4B3st!');
$sql = $pdo->prepare("INSERT INTO my_table (name, surname) VALUES (:name, :surname)");
$sql->execute([
    ':name' => isset($_POST['name']) ? $_POST['name'] : '',
    ':surname' => isset($_POST['surname']) ? $_POST['surname'] : '',
]);