PDO de PHP à insérer dans DB à partir d'un tableau associatif

J'ai un tableau comme ceci

  $a = array( 'phone' => 111111111, 'image' => "sadasdasd43eadasdad" );

Quand je fais du var-dump-je obtenir this ->

 { ["phone"]=> int(111111111) ["image"]=> string(19) "sadasdasd43eadasdad" }

Maintenant j'essaie de l'ajouter à la DB à l'aide de l'instruction IN -

 $q = $DBH->prepare("INSERT INTO user :column_string VALUES :value_string");
 $q->bindParam(':column_string',implode(',',array_keys($a)));
 $q->bindParam(':value_string',implode(',',array_values($a)));
 $q->execute();

Le problème que j'ai c'est que imploser retourner une chaîne de caractères. Mais le "téléphone" de la colonne est un entier dans la base de données et le tableau est de stocker un nombre entier. Donc j'obtiens l'erreur SQL que ma dernière requête ressembler à ceci --

INSERT INTO user 'phone,image' values '111111111,sadasdasd43eadasdad';

Ce qui est une fausse requête. Est-il un moyen de contourner cela.

Mes noms de colonne sont dynamiques en fonction de ce que l'utilisateur souhaite insérer. Je ne peux donc pas utiliser les espaces réservés comme :téléphone et :image que je ne peut pas toujours obtenir les valeurs de ces deux colonnes. S'il vous plaît laissez-moi savoir si il existe un moyen de contourner cela. sinon je vais avoir de définir plusieurs fonctions de chaque type de mise à jour.

Grâce.

combien de temps est la durée de parfaire votre domaine? c'retour de neuf (9) 1 mais votre numéro de téléphone ont 10d igits. Sql doit retourner un message d'avertissement comme il a tronqué la valeur, mais il suffit de cocher.
D'accord Louis, bien qu'un numéro de téléphone peut être vu comme un entier, vous ne vous attendez pas à faire toute mathématiques avec elle et vous pouvez exécuter de taille, il est généralement mieux traités et stockés comme une chaîne de texte.

OriginalL'auteur Fox | 2012-11-22