SQL foreign key (insert question)

KANONJI Messages postés 17 Statut Membre -  
Zep3k!GnO Messages postés 2049 Statut Membre -
Bonjour,

j'ai crée 2 tables, UserInfo et ObjectInfo. Je souhaite que la table ObjectInfo soit liée à la table UserInfo via l'info Pseudo.
J'ai donc utilisé une clé étrangère comme ci-dessous:

$sql1="CREATE TABLE IF NOT EXISTS 'MyData'.'UserInfo' (
  'Pseudo'        varchar(20) NOT NULL,
  'Mail'          varchar(40) NOT NULL,
  'Sex'           varchar(10) NOT NULL,
  'Age'           int(4) NOT NULL,
  'Country'       varchar(40) NOT NULL,
  PRIMARY KEY ('Pseudo')
) ENGINE=MyISAM DEFAULT CHARSET=latin1;";


$sql2="CREATE TABLE IF NOT EXISTS 'MyData'.'ObjectInfo' (
  'Coordinates'   varchar(9) NOT NULL,
  'UserId'      int(7) NOT NULL,
  'Color'         varchar(8) NOT NULL,  
  PRIMARY KEY ('Coordinates'),
  FOREIGN KEY ('UserId') REFERENCES 'MyData'.'UserInfo'('Pseudo')
) ENGINE=MyISAM DEFAULT CHARSET=latin1;";


Ensuite, je veux insérer des informations dans ces deux tables, l'objectif etant de remplir une seule fois la table UserInfo et une ou plusieurs fois la table ObjectInfo.

Je vous passe les boucles, j'ai pris un ex 1 table UserInfo et 1 table ObjectInfo

     $sqlreq1="INSERT INTO 'MyData'.'UserInfo' (
      'Pseudo',
      'Mail',
      'Sex',
      'Age',
      'Country'
      )
      VALUES (
        '$_POST[pseudo]','$_POST[email]','$_POST[sex]','$_POST[age]','$_POST[country]'
      );";
    ---> aucun problème pour cette commande

     $sqlreq2="INSERT INTO 'MyData'.'ObjectInfo' (
	'Coordinates',
        'UserId',
	'Color',
	) 
	VALUES (
	'$x:$y','$_POST[pseudo]','$_POST[colorchoice]'
      );";


Quand je regarde avec EasyPHP le contenu de ma table ObjectInfo, l'element UserId vaut 0 alors que je m'attendais à avoir la valeur de Pseudo de la table UserInfo.

Est ce que que quelqu'un a une idée pour résoudre ce problème ?

Je suis assez débutant dans le domaine. Merci d'avance

Kanonji

1 réponse

Zep3k!GnO Messages postés 2049 Statut Membre 200
 
Normal, tu veux insérer la valeur contenu dans $_POST[pseudo] dans le champ 'UserId' int(7) NOT NULL, comme on peut le voir, c'est un int et je suppose que ton pseudo est une string...
Bref string dans int, ça passe pas !
0