关于SQL注入的问题

Questions about SQL injection

我正在尝试阻止 sql 注入。我的代码如下

$stmt = $db_connection->prepare("INSERT INTO users (user_name,user_password_hash,user_email,user_firstname,user_lastname,user_registerip,user_lastip,user_created,user_rank,user_block) VALUES (:user_name, :user_password_hash, :user_email, :user_firstname, :user_lastname, :user_registerip, :user_lastip, :user_created, :user_rank, :user_block)");
$stmt->bindParam(':user_name', $txtName);
$stmt->bindParam(':user_password_hash', $txtPassword);
$stmt->bindParam(':user_email', $txtMail);
$stmt->bindParam(':user_firstname', $txtFirst);
$stmt->bindParam(':user_lastname', $txtLast);
$stmt->bindParam(':user_registerip', $txtRIP);
$stmt->bindParam(':user_lastip', $txtIP);
$stmt->bindParam(':user_created', $txtCreated);
$stmt->bindParam(':user_rank', $txtRank);
$stmt->bindParam(':user_block', $txtBlock);
$stmt->execute();

但我不知道如何处理这样的一行:

$stmt->bindParam(':user_block', $txtBlock);

我在哪里定义这些变量,例如 $txtBlock 以及如何将我的 input 名称连接到 PHP 代码?

您可以根据自己的喜好定义这些变量。如果您使用的表格如下:

<form action="process.php" method="POST">
    <input name="example" type="text">
    <input type="submit">
</form>

然后在页面 process.php 上,您可以通过 $_POST 全局访问所有变量。因此,要从字段 example 中获取数据并将其分配给 $txtBlock,您可以这样做:

$txtBlock = $_POST["example"]; 

在 SQL 注入方面,您已经准备好查询并将变量绑定到它。无需担心进一步清理输入。在谈论 PDO 时,我发现 following resource 很有帮助。