我得到了这个数据库结构:
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 查询?
最佳答案
我相信name
是MySQL中的保留字。您可能只需要使用反引号字符来转义它,如下所示,
SELECT `name` FROM username;
关于php - 外键约束使 SELECT 查询返回 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50520102/