Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在SQL上显示表的名称_Php_Sql_Database - Fatal编程技术网

Php 如何在SQL上显示表的名称

Php 如何在SQL上显示表的名称,php,sql,database,Php,Sql,Database,首先,我来自西班牙,如果我在写作中犯了一些错误,我很抱歉。所以,我有两个问题。如果我能在这之前给出上下文,那会更好。我甚至还不小,仍在学习代码,我认为创建一个网页,在其中可以添加配料、含有这些配料的食物等,这将是一个很好的项目。所以我决定开始学习PHP和SQL。现在我正试图创建一个数据库,从一些配料和两种大米开始。我的第一个问题是,我不知道是否需要为此创建数据库。第二个也是最主要的一个是,我不知道如何让它按我想要的方式工作 看,首先我创建了配料表 CREATE TABLE ingrediente

首先,我来自西班牙,如果我在写作中犯了一些错误,我很抱歉。所以,我有两个问题。如果我能在这之前给出上下文,那会更好。我甚至还不小,仍在学习代码,我认为创建一个网页,在其中可以添加配料、含有这些配料的食物等,这将是一个很好的项目。所以我决定开始学习PHP和SQL。现在我正试图创建一个数据库,从一些配料和两种大米开始。我的第一个问题是,我不知道是否需要为此创建数据库。第二个也是最主要的一个是,我不知道如何让它按我想要的方式工作

看,首先我创建了配料表

CREATE TABLE ingredientes(
id       int(255) auto_increment not null,
ingrediente    varchar(255) not null,
CONSTRAINT pk_ingredientes PRIMARY KEY(id) )ENGINE=InnoDb;
抱歉,因为它是西班牙语的:/,但没什么难懂的。 所以我加了一些配料。

之后,我创建了两个表,并添加了配料

CREATE TABLE arroz_con_pollo(
    id          int(255) auto_increment not null,
    ingrediente    int(255) not null,
    CONSTRAINT pk_arroz_con_pollo PRIMARY KEY(id),
    CONSTRAINT fk_pollo_ingredientes FOREIGN KEY(ingrediente) REFERENCES ingredientes(id) )ENGINE=InnoDb;
这是显示身份证的照片

所以现在我花了很多时间研究,发现我可以使用这个命令显示名称

SELECT a.id,i.ingrediente
    FROM ingredientes i, arroz_cubana a
        WHERE i.id = a.id;
吃点类似的东西


在这一点上,一切或多或少都在起作用。当我想创建一个数据库,将所有名称(arroz con pollo,arroz cubana…)保存在一个名为“rices”的表中,以便能够选择一个名称,并自动将配料放在那里,而不会给用户带来任何麻烦时,我的问题就来了。但是,我真的不知道。我已经写了好几个小时了,在这方面没有任何胜利。我在网上还没有看到任何类似的东西,所以,如果有人告诉我如何解决这个问题,或者如何建立一个网络来保存配料和食物,我会非常感激的。

这篇评论太长了

你的数据结构乱七八糟。SQL并不是为每个成分设计一个单独的表。相反,您需要另外两张桌子

第一个是菜肴:

制作餐具( 碟形id自动增量不为空, 名称varchar(255) );

然后将适当的行插入到以下内容中:

INSERT INTO dishes (name)
    VALUES ('arroz_on_pollo');
然后,您有另一张配料表:

CREATE TABLE dishes_ingredients (
    dish_ingredient_id  int auto_increment primary key,
    dish_id int not null
    ingredient_id int not null,
    CONSTRAINT fk_dish_ingredientes_dish FOREIGN KEY(dish_id) REFERENCES dishes(dish_id)
    CONSTRAINT fk_dish_ingredientes_dish FOREIGN KEY(ingredient_id) REFERENCES ingredientes(ingredient_id)
);
瞧!新的菜肴只是表格中的一行,因此您可以使用
选择
来获取名称

结构说明:

  • int(255)
    真的毫无意义。只需使用
    int
    。括号中的数字是打印值时的宽度,255是荒谬的宽度
  • 我喜欢用表名命名主键。这样,主键和外键通常具有相同的名称

    • 你不应该为每道菜安排一张桌子。创建一个表“dish”,其中包含一列“name”。每行代表一道菜。然后创建一个支持表,列出每道菜的(多种)配料。环顾四周寻找关于数据库的教程,这个主题太大,无法在一个(或几个)stackoverflow问题中解释


      因此,您不需要按照您考虑的方式列出表名。(这不是SQL直接支持的功能;不同的数据库提供了非标准的方法,但正如所解释的那样,您实际上并不需要这样的功能。)

      让我重复一遍:看看有没有吸引您的教程;数据库设计不是通过随机探索就能学到的东西。哇,这太有用了!多谢各位。我将这样尝试:)顺便说一句,感谢您的良好编程实践,我仍在学习,这太棒了:D
      CREATE TABLE dishes_ingredients (
          dish_ingredient_id  int auto_increment primary key,
          dish_id int not null
          ingredient_id int not null,
          CONSTRAINT fk_dish_ingredientes_dish FOREIGN KEY(dish_id) REFERENCES dishes(dish_id)
          CONSTRAINT fk_dish_ingredientes_dish FOREIGN KEY(ingredient_id) REFERENCES ingredientes(ingredient_id)
      );