2010-01-07 10 views
0

J'ai deux requêtes différentes dans ma page php pour la même table, la première est exécutée si j'ai deux valeurs différentes pour deux colonnes, mais dans certains cas, je peux utiliser seulement la première valeur, puis-je le faire avec le même requête ou devrais-je utiliser deux requêtes différentes?Puis-je éviter d'écraser une colonne avec une valeur NULL sur une requête INSERT?

// query 1 
"INSERT INTO my_table (column_1, column_2) VALUES ('$value_1', '$value_2')"; 

// second query, used if $value_2 is null 
"INSERT INTO my_table (column_1) VALUES ('$value_1')"; 

// can I do something like this without use a SELECT for column_2 before the INSERT? 
$value_2 = null; 
"INSERT INTO my_table (column_1, column_2) VALUES ('$value_1', '$value_2')"; 
// ======================================= new value ===^ | ^=== mantain old value because it's null 

si je peux exécuter une instruction INSERT avec de nouveaux ents sans écraser les anciens vals avec une valeur nulle?

Répondre

2

Un INSERT ne remplacera jamais un ancien enregistrement (bien qu'il puisse échouer si vous essayez d'insérer un enregistrement qui casse une contrainte de clé unique). Vous pouvez donc simplement utiliser la première requête, même si $value_2 est nulle, et obtenir les mêmes résultats.

Si vous souhaitez remplacer des enregistrements, vous devez utiliser une instruction UPDATE. Dans ce cas, vous ne pouvez remplacer qu'une seule colonne, si vous le souhaitez. Voir http://dev.mysql.com/doc/refman/5.0/en/update.html pour la syntaxe UPDATE.

Il existe également REPLACE pour remplacer les anciennes lignes dans le cas de clés uniques, mais il semble que ce soit le contraire de ce que vous voulez faire.

+0

ok merci, je me souviendrai de la différence entre INSERT et UPDATE, cya – vitto

Questions connexes