PHP MYSQL“合并”变量

时间:2013-08-03 23:36:24

标签: php mysql sql

这是一种在表foo中合并一个名为“bob”的变量,在我的表foo2中合并我的变量bob2的方法吗?

所以他们总是相互匹配。

因为我正在更新“bob”。我希望如果该值发生变化,它也会对bob2产生影响,反之亦然。

这可能吗?

编辑:

CREATE TABLE IF NOT EXISTS `stats` (
  `ID` int(11) NOT NULL auto_increment,
  `player` varchar(12) default '',
  `rank` varchar(12) default '',
  `winpot` int(20) default '0',
  `gamesplayed` int(11) default '0',
  `tournamentsplayed` int(11) default '0',
  `tournamentswon` int(11) default '0',
  `handsplayed` int(11) default '0',
  `handswon` int(11) default '0',
  `bet` int(11) default '0',
  `checked` int(11) default '0',
  `called` varchar(11) default '0',
  `allin` varchar(11) default '0',
  `fold_pf` varchar(11) default '0',
  `fold_f` varchar(11) default '0',
  `fold_t` varchar(11) default '0',
  `fold_r` int(11) default '0',
  PRIMARY KEY  (`ID`)
  FOREIGN KEY (winpot) REFERENCES brukere(hand)
);

错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (winpot) REFERENCES brukere(hand) )' at line 20

我试图获得winpot参考表格布鲁克尔。

这里有什么问题?

EDIT2:

create table brukere(
  hand int(20) NOT NULL,
  id int(20) NOT NULL auto_increment,
  PRIMARY KEY (id)
  );

CREATE TABLE IF NOT EXISTS `stats` (
  `ID` int(11) NOT NULL auto_increment,
  `player` varchar(12) default '',
  `rank` varchar(12) default '',
  `winpot` int(20),
  `gamesplayed` int(11) default 0,
  `tournamentsplayed` int(11) default 0,
  `tournamentswon` int(11) default 0,
  `handsplayed` int(11) default 0,
  `handswon` int(11) default 0,
  `bet` int(11) default 0,
  `checked` int(11) default 0,
  `called` varchar(11) default '0',
  `allin` varchar(11) default '0',
  `fold_pf` varchar(11) default '0',
  `fold_f` varchar(11) default '0',
  `fold_t` varchar(11) default '0',
  `fold_r` int(11) default 0,
  PRIMARY KEY  (`ID`),
FOREIGN KEY (winpot) REFERENCES brukere(hand)
);

Schema Creation Failed: Can't create table 'db_2_7249b.stats' (errno: 150): 

(无法上传trought SQL(仍在调查)。所以在这里发布。希望你不介意

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

这种关系在sql中很常见,但是你通常以不必更新第二个表的方式构建它,即你在每个表中使用id来表示它们的值,并在更改时变量值,您不必更新多个表。

例如:

如果你有一个表foo

CREATE TABLE foo (
     id integer NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

和表格栏

CREATE TABLE bar (
     id INTEGER NOT NULL AUTO_INCREMENT,
     foo_id INTEGER NTO NULL,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id),
     FOREIGN KEY (foo_id) REFERENCES foo(id)
);

这样,当您在表foo上将bob的名称更改为john时,您不必更改表栏上的任何内容,因为您具有对id字段的引用而不是名称。

希望它有所帮助。