Мне действительно нужен bindParam? - PullRequest
1 голос
/ 18 марта 2010

Я пытаюсь сделать небольшой 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?

Если нет, то как я могу это сделать?

Спасибо из Швеции

Tobias

1 Ответ

2 голосов
/ 18 марта 2010

Да, это безопасно. bindParam() связывает параметр с переменной, используйте его, если хотите, чтобы значение переменной использовалось при вызове execute(). В противном случае то, что вы делаете, хорошо.

PHP Документы на PDO bindParam()

...