我已经获得了这个数据库结构:
DROP TABLE IF EXISTS `account`;
CREATE TABLE IF NOT EXISTS `account` (
`accountType` varchar(120) NOT NULL,
PRIMARY KEY (`accountType`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `username`;
CREATE TABLE IF NOT EXISTS `username` (
`usernameID` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(200) NOT NULL,
`name` varchar(200) NOT NULL,
`phoneNr` int(15) NOT NULL,
`email` varchar(120) NOT NULL,
`accountType` varchar(120) NOT NULL,
PRIMARY KEY (`usernameID`),
KEY `accountType` (`accountType`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `username`
ADD CONSTRAINT `username_ibfk_1` FOREIGN KEY (`accountType`) REFERENCES `account` (`accountType`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
现在,我想从用户名表中选择一个用户。在MySQL工作台中,我得到了我正在寻找的结果:
SELECT name FROM username;
然而,当在PHP中使用mysqli查询时,我得到num_rows =>在我的结果对象中为0,如下所示:
如果我从用户名表中删除KEY,它就可以工作,所以我认为这就是问题所在。我该如何改变我的SELECT查询?
答案 0 :(得分:0)
我相信name
是MySQL中的保留字。你可能只需要使用像这样的反引号字符来逃避它,
SELECT `name` FROM username;
答案 1 :(得分:0)
出于某种原因,似乎InnoDB就是问题所在。一旦我从用户名表中删除了ENGINE = InnoDB,一切正常。