了解参数化查询php,sql,mysql

时间:2018-06-21 16:00:07

标签: php mysql sql

我一直在寻找有关参数化查询的信息,问题是我找不到php中要遵循的基本示例。

这正确吗?

PHP

 $email= $_POST["email"]; //or mysqli_real_escape_string($_POST["email"]);?

SQL

 SET @email = '$email';
 SELECT email FROM users WHERE email=@email

此配置足以避免sql注入吗?

2 个答案:

答案 0 :(得分:1)

使用bind_param是一种避免注入的方法,例如php

$stmt = $dbConnection->prepare(' SELECT email FROM users WHERE email=?');
$stmt->bind_param('s', $email); // 's' is string

$stmt->execute();
$result = $stmt->get_result();
//do something with $result

根据您在评论中的要求,我认为这可能会奏效,我不确定自己的想法。在PDO中进行多次展示的另一种方式是

$stmt= $dbh->prepare('SELECT email, user, status, is_new 
                    FROM users 
                    WHERE email=:email 
                    AND user=:user 
                    AND status=:status 
                    AND is_new=:is_new');
$stmt->bindParam(':email ', $calories);
$stmt->bindParam(':user', $user);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':is_new', $is_new);

$stmt->execute();

答案 1 :(得分:0)

在这种情况下,您可以使用SQL注入,并且需要使用

mysqli_real_escape_string($_POST["email"]);

以确保不可能进行SQL注入。但是,使用PDO是另一种选择。 http://php.net/manual/en/book.pdo.php

我希望这会有所帮助。