【发布时间】:2010-07-16 09:04:20
【问题描述】:
好的,我为我的示例制作了一个简单的数据库,有用户数据和用户公司的数据。
CREATE TABLE `users` (
`UID` INT(25) NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(60) NOT NULL ,
`password` VARCHAR(100) NOT NULL ,
`ownername` VARCHAR(150) NOT NULL ,
`userstatus` TINYINT(1) NOT NULL ,
`userregistertime` DATETIME NOT NULL ,
`userlastonline` DATETIME NOT NULL ,
PRIMARY KEY (`UID`) ,
INDEX `username` (`username` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
CREATE TABLE `company` (
`CID` INT(25) NOT NULL AUTO_INCREMENT ,
`UID` INT(25) NOT NULL ,
`companyname` VARCHAR(60) NOT NULL ,
`companyaddress` VARCHAR(255) NOT NULL ,
`companyemail` VARCHAR(255) NULL DEFAULT NULL ,
`companyphone` VARCHAR(20) NOT NULL ,
`companyimage` VARCHAR(255) NULL DEFAULT NULL ,
`companyyahoo` VARCHAR(255) NULL DEFAULT NULL ,
`companytwitter` VARCHAR(255) NULL DEFAULT NULL ,
`companykaskus` VARCHAR(255) NULL DEFAULT NULL ,
`companyfacebook` VARCHAR(255) NULL DEFAULT NULL ,
`companytype` TINYINT(1) NOT NULL DEFAULT '0' ,
`companystatus` TEXT NULL DEFAULT NULL ,
`companytemplate` TEXT NULL DEFAULT NULL ,
`companyintroduction` TEXT NULL DEFAULT NULL ,
`partnership` TINYINT(1) NOT NULL DEFAULT '0' ,
PRIMARY KEY (`CID`) ,
INDEX `ownername` (`UID` ASC) ,
INDEX `companyname` (`companyname` ASC) ,
CONSTRAINT `ownernamecompany`
FOREIGN KEY (`UID` )
REFERENCES `users` (`UID` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;
1.为什么在我向用户表插入数据后(uid 是自动递增的)它没有更新我公司的 UID 表?
如果你有 php 知识,请看看我是如何插入它的。
$RegisterInsert1 = $dbConnect->prepare("INSERT INTO users (
`username`, `password`, `ownername`, `userregistertime`, `userlastonline`) VALUES (
:username, :password, :ownername, :userregistertime, :userlastonline)");
$RegisterInsert1->execute($RegisterData1);
如您所见,我得到 UID = 1 ( auto ) 然后将用户名、密码、所有者名等插入到用户表中。但不知何故,我的公司 UID 没有更新。它应该是 UID = 1 然后是其余的 CID ( auto ) companyname null 等等。
2.我是否正确定义了外键用法?
3.请给我插入用户数据+公司数据的最佳示例,正确使用外国的正确用法。
我现在怎么样了
// INSERT USERS DB
$RegisterInsert1 = $dbConnect->prepare("INSERT INTO users (
`username`, `password`, `ownername`, `userregistertime`, `userlastonline`) VALUES (
:username, :password, :ownername, :userregistertime, :userlastonline)");
$RegisterInsert1->execute($RegisterData1);
// GET USERS GIVEN AUTO GENERATED UID
// QUESTION ? THIS one should be automated by foreign useage ?
$GetUid = $dbConnect->prepare("SELECT UID FROM users WHERE username = :username");
$GetUid->execute($RegisterData3);
$UserID = $GetUid->fetch();
$RegisterData2['UID'] = $UserID;
// INSERT COMPANY INFO + UID
$RegisterInsert2 = $dbConnect->prepare("INSERT INTO company (
`UID`,`companyphone`,`partnership`) VALUES (
:UID, :companyphone, :partnership)");
$RegisterInsert2->execute($RegisterData2);
【问题讨论】:
-
如果你只写与问题 drct 相关的代码,你会得到更多的赞赏……
-
当我将数据 olny 插入用户表时,我试图做的是从 UID.users 更新 UID.company。 UID.users 是自动增量的,它应该在增量时复制到 UID.company。所以我不必使用 // GET UserS GIVEN AUTO GENERATED UID 。希望你能理解。谢谢朋友。
标签: php sql mysql database database-design