2009-12-16 12 views
0

J'ai un tableau assoc rempli avec les valeurs nécessaires pour un PDOstatement. Devrais-je lier chaque valeur puis appeler execute? Ou appelez exécuter en lui passant le tableau de valeurs?Doit-on lier des entrées de tableau individuelles ou simplement exécuter le tableau avec PDO?

Array(
    [name] => Joe 
    [value] => some content 
) 

Dois-je:

foreach($data as $key => $value){ 
    $statement->bindValue($key, $value); 
} 
execute(); 

OU

execute($data); 

Pour autant que je sache, lier les données ne certaine forme d'assainissement des données similaires à mysql_real_escape_string. Je ne sais pas si j'ai besoin de lier les valeurs pour atteindre cet effet ou si je peux juste passer le tableau de données à execute() et supposer qu'il a été correctement échappé?

Répondre

0

Cela n'a pas d'importance lorsque vous utilisez une instruction préparée.

Veuillez noter que vos données ne seront pas filtrées ni échapées, il est inscrit dans la base de données exactement comme il est.

Par ailleurs, Kemo est juste, mais this is the more appropriate link: ou utilisation bind ou utiliser un tableau

+0

attends, je pensais que c'était les avantages de l'utilisation des fonctions de préparation et de liaison. Dois-je utiliser mysql_real_escape_string sur les données avant de les lier? Est-ce que PDO utilise mysql_connect() à un moment donné pour que mysql_real_escape_string fonctionne? –

+0

Je ne sais pas, je n'utilise pas mysql_real_escape_string car ce n'est plus nécessaire: Une instruction préparée prépare l'instruction afin que toutes les données que vous entrez en tant que variable soient réellement considérées comme une variable et non comme une partie d'une instruction mysql . – jeroen

+0

Alors la préparation de l'instruction échappe d'une manière ou d'une autre aux données de sorte que mySQL traite la valeur/variable liée en tant que donnée? Sinon, je supposerais que l'échappement des données serait toujours nécessaire. –

2

Dans la mesure où vous faites un prepare(), vous pouvez lier des valeurs comme vous le souhaitez.

Lire les documents; link text link text

+0

Je me rends compte que je peux lier toutes les valeurs, la question est dois-je marcher dans mon tableau et lier toutes les valeurs individuellement, ou existe-t-il un moyen de les lier tous automatiquement. –

+0

J'ai ajouté un deuxième lien pour une fonction de liaison de tableau, jetez y un coup d'oeil. – Kemo

+0

Donc je devrais lier individuellement chaque valeur de tableau et ne pas faire confiance à execute() pour le faire pour moi? –