我一直在寻找有关参数化查询的信息,问题是我找不到php
中要遵循的基本示例。
这正确吗?
PHP
$email= $_POST["email"]; //or mysqli_real_escape_string($_POST["email"]);?
SQL
SET @email = '$email';
SELECT email FROM users WHERE email=@email
此配置足以避免sql注入吗?
答案 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
我希望这会有所帮助。