php - 外键约束使 SELECT 查询返回 0 行

标签 php mysql mysqli

我得到了这个数据库结构:

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,如下所示:

(结果对象上方的 var_dump 是我要发送的查询)

如果我从用户名表中删除 KEY,它就会起作用,所以我认为这就是问题所在。我应该如何更改我的 SELECT 查询?

最佳答案

我相信name是MySQL中的保留字。您可能只需要使用反引号字符来转义它,如下所示,

SELECT `name` FROM username;

参见Keywords and Reserved Words .

关于php - 外键约束使 SELECT 查询返回 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50520102/

相关文章:

php - 存储在数据库中的csv字符串中带有后缀的Mysql搜索关键字

mysql - 在 Mysql 中通过 Pipe/Or 使用 RegexP

mysql - 如何将 SQL 别名与变量一起使用

php - 如何将数据库中的值放入表中的特定列

php mysqli 没有返回值

php - MYSQL IF(expr1,expr2,expr3) 但我不想要任何 expr3(如果 expr3 则不输出任何内容

php - 换行符有什么用?

php - HTML 表单 POST 到 PHP 页面

mysql - 组合两个快速索引查询会使结果变慢

PHP-mysqli 无法连接到在 Docker 中运行的 MySQL 8.0.16