2010-12-06 4 views
1

Je suis obsédé. Je travaille pour la première fois avec la déclaration préparée et je suis sûr que je l'ai lu quelque part que vous pouvez préparer une déclaration comme:Préparé l'instruction mysqli

$stmt = $db->prepare("INSERT INTO {$table} (:var1, :var2) VALUES (:val1, :val2)"); 
$stmt->bind_param(':var1', $var1); 
$stmt->bind_param(':var2', $var2); 
$stmt->bind_param(':val1', $val1); 
$stmt->bind_param(':val2', $val2); 
$stmt->execute(); 

Ou quelque chose comme ça. Je me souviens que j'ai lu que vous pouviez appeler les vars avec un nom spécifique avec ':' comme préfixe. Mais je ne peux vraiment pas trouver un exemple de cela. J'ai lu le manuel de php et je n'ai trouvé aucun échantillon de cette chose. Est-ce exact ou l'ai-je rêvé?

Foire Aux Questions

Si vous vous demandez pourquoi je ne peux pas utiliser simplement le « ? » méthode:

$stmt = $db->prepare("INSERT INTO {$table} (?, ?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?)"); 

cela devient difficile à écrire.

+0

Pigarelli - Faites-vous référence à 'select @current_time: = NOW(); sélectionnez @current_time; '? PS: pas trop sûr que la liaison sur la colonne est autorisée – ajreal

Répondre

1

Vous ne pouvez pas faire :var1, :var2, :varX dans la liste des noms de colonnes et la liste VALUES pour une chose. Deuxièmement, PDO accepte la liaison de paramètre nommée.

Voir PHP Data Objects et des exemples dans PDO::prepare.