Pdo更新查询中的变量

时间:2013-09-01 17:33:23

标签: php mysql pdo

好的,所以我将要更新的列存储在一个变量中,所以我需要将变量放在主查询的一边,我尝试这样做

$sqlltyryrt = "UPDATE user_items SET :fggdgdf = :fggdgdf +1 WHERE username=?";
    $qqqqq = $db->prepare($sqlltyryrt);
$qqqqq->execute(array('fggdgdf'=>$fggdgdf),$_SESSION['username']);

我已经搜索了一个答案,并在网站上找到了一个相同的主题:

1 个答案:

答案 0 :(得分:0)

$sqlltyryrt = "UPDATE user_items SET :fggdgdf = :fggdgdf +1 WHERE username=?";
$qqqqq = $db->prepare($sqlltyryrt);
$qqqqq->execute(array('fggdgdf'=>$fggdgdf),$_SESSION['username']);

您无法绑定列的名称;所以这是行不通的。没有办法对列或表名使用绑定变量,因此唯一的方法是将变量插入到字符串中:

$sqlltyryrt = "UPDATE user_items SET $fggdgdf = $fggdgdf +1 WHERE username=?";
$qqqqq = $db->prepare($sqlltyryrt);
$qqqqq->execute(array($_SESSION['username']));

但是你需要非常确定你已经对变量进行了清理,否则你会对SQL注入开放。您可以使用白名单,因为您应该能够生成一系列可能的列名,并且可以检查该数组中是否存在变量。

但是你试图绑定注释名称这一事实意味着你的数据库设计可以用来查看。