53 votes

PHP MYSQL - Insérer dans sans utiliser les noms de colonnes mais avec un champ d'auto-incrément

Je dois insérer un long formulaire avec 32 champs dans une table mysql.

J'aimerais faire ça comme ça :

$sql="insert into tblname values (... 32 fields ...)";

Évidemment, cela fonctionne bien si les champs sont dans le même ordre que ceux de la table mysql. Mais, ma table a comme premier champ un id (auto-incrément).

Ce que je veux, c'est remplir tous les noms de table sauf le premier (id).

Des suggestions ?

84voto

Doug Neiner Points 34940

Il suffit d'utiliser NULL comme première valeur, le autoincrement fonctionnera toujours comme prévu :

INSERT INTO tblname VALUES (NULL, ... 32 Fields ... )

14voto

gahooa Points 38006

Insérer NULL dans le champ d'auto-incrémentation.

Je recommande, à moins qu'il ne s'agisse d'un script pirate, d'utiliser des noms de champs. Le raisonnement est que votre code rupture si jamais vous ajoutez un champ à la table ou si vous changez leur ordre.

Au lieu de cela, soyez explicite avec les noms des champs, et cela se passera beaucoup mieux à l'avenir.

-1voto

bharanikumar Bs Points 57

Nous devons omettre toute valeur de colonne lorsque nous essayons sans nom de colonne dans la requête d'insertion,

Si les informations ci-dessus sont erronées, veuillez nous en informer.

-3voto

Chaya Cooper Points 945

Voici un excellent raccourci que j'ai utilisé (grâce à un ami qui l'a écrit pour moi)

$fieldlist=$vallist='';
foreach ($_POST as $key => $value) {
 $fieldlist.=$key.',';
 $vallist.='\''.urlencode($value).'\','; }
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$sql='INSERT INTO customer_info ('.$fieldlist.') VALUES ('.$vallist.')';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X