Refus de modif de nom de champs SQL

Fermé
danbo52 Messages postés 5 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 23 décembre 2009 - 22 déc. 2009 à 13:45
danbo52 Messages postés 5 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 23 décembre 2009 - 23 déc. 2009 à 17:12
Bonjour,

développant une appli FLash -> php -> MySQL en local pour la phase de tests,

je bloque avec cette syntaxe:
---------------------------------------------------------------------------------------
$modichamps="ALTER TABLE ".$table." CHANGE ".$champsA." ".$champsB;
$modiquery = mysql_query($modichamps);
---------------------------------------------------------------------------------------

où je souhaite pouvoir changer le nom d'un champs via php.

Si tous les forums donnent la même syntaxe, la commande "$modiquery = mysql_query($modichamps); " ne semble pas faire effet, après avoir posé des flags de contrôle.

Alors ma question est la suivante. Y aurait-il des variables ou paramètres propres à phpAdmin (je teste avec easyphp dernière version prise récemment sur le net.) qui seraient à modifier ?

Tous le reste de mes développements fonctionne à merveille (ajout, suppression, sauvegarde, clonage etc... de table, colonnes), sauf celui-ci.

Sur les sites spécialisés en php-MySQL, dont celui-ci, les commandes sont toujours les mêmes.

Merci pour votre intervention.

Danbo

1 réponse

Bonjour

Regarde dans le manuel mysql, ta syntaxe est incorrecte. Pour un ALTER table CHANGE... il FAUT indiquer le type de champ.

$type="INTEGER'; // par exemple
$modichamps="ALTER TABLE $table CHANGE $champsA $champsB $type";
$modiquery = mysql_query($modichamps);
0
danbo52 Messages postés 5 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 23 décembre 2009
23 déc. 2009 à 17:12
Bonsoir,

merci pour la réponse.
J'avais écrit la syntaxe dans ce sens dans un premier temps, mais sans réponse.
A y regarder de plus près, j'ai donc repris selon ta proposition mais au lieu d'écrire en 'dur' le type, je suis allé le chercher avec mysql_field_type. Il me semble que l'erreur de frappe ou le choix du type n'ait pas été juste (string, sting, strng, etc...), mais je ne m'en souviens pas.

$tlc = mysql_query("SELECT * FROM ".$table,$con);//$con=connexion
...
$ftype = mysql_field_type($tlc,$i);//récupère le type de champs par itération $i des champs
...
$modichamps="ALTER TABLE ".$table." CHANGE ".$champsA." ".$champsB." ".$ftype;
$modiquery = mysql_query($modichamps);

Cela fonctionne bien.

Merci
0