在mySQL预处理语句中使用变量

时间:2012-04-17 17:10:28

标签: php mysql prepared-statement

是否可以在准备好的mySQL查询中使用PHP变量,例如:

$stmt = $mysqli->prepare("UPDATE table SET $variable_field = ? WHERE field = ?");

它在订购系统中使用 - 这样我就有一个存储购物车内容的会话。直到最后我才知道订购的商品总数。所以说客户订购10件物品 - 我需要将这些值插入item_1,item_2,item_3等。

我想要实现的目标:

<<connect to DB>>
$x = 0;
while($x < count($order_contents)) {
    $stmt = $mysqli->prepare("UPDATE table SET item_$x = ? WHERE field = ?");
    $stmt->bind_param("ss", $order_contents[$x], $order_number);
    $stmt->execute();
    $x++;
}
<<close DB connection>>

这些方面几乎都有。问题是,我看不出它允许我直接在查询中指定PHP变量。有任何帮助或建议吗?

1 个答案:

答案 0 :(得分:1)

$x = 0;
while($x < count($order_contents)) {
    $x++;
    $stmt = $mysqli->prepare('UPDATE table SET item_'.$x.' = ? WHERE field = ?');
    $stmt->bind_param("ss", $order_contents[$x], $order_number);
    $stmt->execute();
}

我还将$x++移到了循环的开头,因为你想从item_1开始。