我准备了一系列有效的查询。现在我正在保护这些查询以防止注入。当我在查询中有一个变量但是无法通过反复试验找到更多的变量时,我可以做得很好。
这就是我正在做的事情(参见$ sql和$ handle-> execute()):
<?php
$sql = "SELECT FORMAT (z.PriceMultiplier * p.BasicTicketPrice,2)
AS totalPrice
FROM Zone z JOIN Production p
WHERE p.Title = :n AND z.Name = :n";
$handle = $conn->prepare($sql);
$zone = "$_POST[Zone]";
$prod = "$_POST[Production]";
$handle->execute(array(":n"=> $zone, $prod))
$conn = null;
$res = $handle->fetchAll();
foreach($res as $row) {
echo "<input name='Price' type='text' readonly='readonly' value=£".$row['totalPrice']."><br>";
}
?>
如何将变量$ zone和$ prod分配给handle-&gt; execute()中的语句?
提前谢谢。
[编辑1:解决方案:使用?而不是:n p.Title =? AND z.Name =?并执行$ handle-&gt; execute(array($ zone,$ prod))]
[编辑2:我不相信这是重复的 - 问题不在于如何防止注入攻击......这是如何处理多个变量的。]