2010-03-18 7 views
1

J'essaie de faire un peu de PDO pour apprendre quelque PDO. J'ai une question à propos de bindParam. Voici ma méthode de mise à jour en ce moment:Ai-je vraiment besoin de 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); 
} 

dans mon « moi :: condition_array de $ » Je reçois toutes les bonnes valeurs de la?. Ainsi, la requête ressemble à ceci: méthode

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

comme vous pouvez le voir, je ne l'utilise bindParams à la place que je passe les bonnes valeurs dans l'ordre ($ array) directement dans l'exécution ($ array). Cela fonctionne comme un charme mais est-il sûr de ne pas utiliser l'utilisation de bindParam ici?

Si non alors comment puis-je le faire?

Merci Suède

Tobias

Répondre

2

Oui, il est sûr. bindParam() associe un paramètre à une variable, utilisez-le lorsque vous souhaitez que la valeur d'une variable soit utilisée lorsque execute() est appelée. Sinon, ce que vous faites est bien.

PHP Docs sur PDO bindParam()

Questions connexes