我得到了这个数据库结构:
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;
现在,我想从username表中选择一个用户。在mysql workbench中,我得到了我想要的结果:
SELECT name FROM username;
但是,在php中使用mysqli查询时,我在结果对象中得到num\u rows=>0,如下所示:
(result对象上方的varu dump是我正在发送的查询)
如果我从username表中删除密钥,它就会工作,所以我假设问题就出在这里。我应该如何更改select查询?
2条答案
按热度按时间hrirmatl1#
我相信
name
是mysql中的保留字。你可能只需要像这样用倒勾字符转义,请参阅关键字和保留字。
cbjzeqam2#
出于某种原因,innodb似乎是个问题。当我从username表中删除engine=innodb时,一切都正常了。