【问题标题】:Do I really need bindParam?我真的需要 bindParam 吗?
【发布时间】:2011-01-28 21:15:46
【问题描述】:

我正在尝试做一些 PDO CRUD 来学习一些 PDO。我有一个关于 bindParam 的问题。这是我现在的更新方法:

public static function update($conditions = array(), $data = array(), $table = '')
{
    self::instance();

    // Late static bindings (PHP 5.3)
    $table = ($table === '') ? self::table() : $table;

    // Check which data array we want to use
    $values  = (empty($data)) ? self::$_fields : $data;

    $sql     = "UPDATE $table SET ";
    foreach ($values as $f => $v)
    {
        $sql .= "$f = ?, ";
    }

    // let's build the conditions
    self::build_conditions($conditions);

    // fix our WHERE, AND, OR, LIKE conditions
    $extra = self::$condition_string;

    // querystring
    $sql   = rtrim($sql, ', ') . $extra;

    // let's merge the arrays into on
    $v_val = array_values($values);
    $c_val = array_values($conditions);
    $array = array_merge($v_val, self::$condition_array);

    $stmt  = self::$db->prepare($sql);
    return $stmt->execute($array);
} 

在我的“self::$condition_array”中,我从 ? 中获得了所有正确的值。所以查询看起来像这样:

UPDATE table SET this = ?, another = ? WHERE title = ? AND time = ?

如您所见,我不使用 bindParams 而是将正确的值以正确的顺序 ($array) 直接传递给 execute($array) 方法。这就像一个魅力但是不在这里使用 bindParam 是否安全?

如果没有,那我该怎么办?

来自瑞典的感谢

托比亚斯

【问题讨论】:

    标签: php pdo crud


    【解决方案1】:

    是的,它是安全的。 bindParam() 将参数与变量相关联,当您希望在调用 execute() 时使用变量的值时使用它。否则你正在做的很好。

    PDO bindParam() 上的 PHP 文档

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 2020-01-29
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-04
      • 2012-03-26
      • 1970-01-01
      相关资源
      最近更新 更多