SQL foreign key (insert question)

Fermé
KANONJI Messages postés 15 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 10 septembre 2010 - 10 sept. 2010 à 11:50
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 10 sept. 2010 à 18:04
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
A voir également:

1 réponse

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
10 sept. 2010 à 18:04
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