Php 将数据上传到两个mysql表中

Php 将数据上传到两个mysql表中,php,mysql,sql,Php,Mysql,Sql,我有一个问题,在数据库中有两个表,一个是类别(cat_id和cat name),另一个是笑话(chake_id和chake)。我希望用户能够选择一个类别并描述他们的笑话,然后将其输入数据库,并引用笑话的类别,以便在特定的类别页面上描述笑话。到目前为止,我能够上传到数据库的笑话,但我还没有能够上传到一个特定的类别笑话 这是笑话表的代码 CREATE TABLE `category` ( `category_id` int(11) NOT NULL AUTO_INCREMENT, `name

我有一个问题,在数据库中有两个表,一个是类别(cat_id和cat name),另一个是笑话(chake_id和chake)。我希望用户能够选择一个类别并描述他们的笑话,然后将其输入数据库,并引用笑话的类别,以便在特定的类别页面上描述笑话。到目前为止,我能够上传到数据库的笑话,但我还没有能够上传到一个特定的类别笑话

这是笑话表的代码

CREATE TABLE `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(51) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO jokes (joke) values(?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($joke));
            Database::disconnect();
            header("Location: index.php");
        }
笑话表的代码

CREATE TABLE `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(51) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO jokes (joke) values(?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($joke));
            Database::disconnect();
            header("Location: index.php");
        }
这段代码将笑话描述插入笑话表

CREATE TABLE `category` (
  `category_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(51) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
if ($valid) {
            $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO jokes (joke) values(?)";
            $q = $pdo->prepare($sql);
            $q->execute(array($joke));
            Database::disconnect();
            header("Location: index.php");
        }
我不知道如何将数据上传到另一个表中,因为笑话被分配了一个类别。如果有人能帮我,那太好了,谢谢


这是githut上的完整文件:

您不能在
类别
表中添加
笑话
。必须使用表中的索引字段引用类别:

+=============+  +=============+
| category    |  | jokes       |
+=============+  +=============+
| category_id |  | joke_id     |
+-------------+  +-------------+
| name        |  | joke        |
+-------------+  +-------------+
                 | category_id |
                 +-------------+
当你检索一个笑话时,你就知道它属于哪一类了。
这在数据库设计中非常基本。您应该在上了解更多信息

不要忘记在字段上创建索引(以获得巨大的性能提升):


不能在
类别
表中添加
笑话
。必须使用表中的索引字段引用类别:

+=============+  +=============+
| category    |  | jokes       |
+=============+  +=============+
| category_id |  | joke_id     |
+-------------+  +-------------+
| name        |  | joke        |
+-------------+  +-------------+
                 | category_id |
                 +-------------+
当你检索一个笑话时,你就知道它属于哪一类了。
这在数据库设计中非常基本。您应该在上了解更多信息

不要忘记在字段上创建索引(以获得巨大的性能提升):


为了将笑话链接到类别,您需要在
笑话
表中添加相应字段

CREATE TABLE `jokes` (
    `joke_id` int(11) NOT NULL AUTO_INCREMENT,
    `joke` varchar(1024) NOT NULL,
    `category_id` int(11) NOT NULL,
    PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;
然后:

$category_id = $_POST['category_id'];

if ($valid) {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO jokes (joke, category_id) values(?,?)";
    $q = $pdo->prepare($sql);
    $q->execute(array($joke, $category_id));
    Database::disconnect();
    header("Location: index.php");
}

category\u id
将显示应用于笑话的类别,因此您可以从
categories
表中检索相应的类别信息。

为了将笑话链接到类别,您需要在
笑话
表中添加相应字段

CREATE TABLE `jokes` (
    `joke_id` int(11) NOT NULL AUTO_INCREMENT,
    `joke` varchar(1024) NOT NULL,
    `category_id` int(11) NOT NULL,
    PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;
然后:

$category_id = $_POST['category_id'];

if ($valid) {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO jokes (joke, category_id) values(?,?)";
    $q = $pdo->prepare($sql);
    $q->execute(array($joke, $category_id));
    Database::disconnect();
    header("Location: index.php");
}

category\u id
将显示应用于笑话的类别,因此您可以从
categories
表中检索相应的类别信息。

我怀疑您正在寻找一种方法,以某种方式将笑话与给定的类别联系起来。这就是R在中的含义,所以我建议对MySql表之间的“关系”进行一些研究。我认为这些概念也会很有用,比如之后可能会连接表

CREATE TABLE `jokes` (
    `joke_id` int(11) NOT NULL AUTO_INCREMENT,
    `joke` varchar(1024) NOT NULL,
    `category_id` int(11) NOT NULL,
    PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5;
但如果您只是在寻找快速解决方案,则可以将笑话表定义为:

CREATE TABLE `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  `category_id` int(11) NOT NULL,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
上面没有添加外键限制,但需要设置类别(不为NULL)。不过,它允许您通过以下方式将新实体添加到数据库:

$sql = "INSERT INTO jokes (joke, category_id) values(?,?)";
$q = $pdo->prepare($sql);
$q->execute(array($joke, $category_id));

其中$category\u id应代表笑话所属类别的id。

我怀疑您正在寻找某种方式将笑话与给定类别联系起来。这就是R在中的含义,所以我建议对MySql表之间的“关系”进行一些研究。我认为这些概念也会很有用,比如之后可能会连接表

但如果您只是在寻找快速解决方案,则可以将笑话表定义为:

CREATE TABLE `jokes` (
  `joke_id` int(11) NOT NULL AUTO_INCREMENT,
  `joke` varchar(1024) NOT NULL,
  `category_id` int(11) NOT NULL,
  PRIMARY KEY (`joke_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
上面没有添加外键限制,但需要设置类别(不为NULL)。不过,它允许您通过以下方式将新实体添加到数据库:

$sql = "INSERT INTO jokes (joke, category_id) values(?,?)";
$q = $pdo->prepare($sql);
$q->execute(array($joke, $category_id));

其中$category\u id应代表笑话所属类别的id。

您到底被困在哪里?插入到表A和插入到表B-这是相同的,似乎您已经拥有了它,只需再次应用它。您的
笑话
表中缺少一个
类别id
?插入到表A和插入到表B-这是相同的,似乎您已经拥有了它,只需再次应用它。您在
笑话中缺少
类别id
。嗨,我已经完成了您所说的,但是类别id没有添加到数据库中。这是我在问题中提到的create.php文件,如果您能快速浏览一下,那就太好了,为回答prompty@user2956943而欢呼,我已经在GitHub上向您发送了包含新代码的pull请求。谢谢Sergey的帮助。当我添加新代码并导航到创建页面时,没有显示任何内容。你知道为什么吗?@user2956943,看看页面的源代码。是否显示了任何HTML代码?不,网页上没有HTML代码,但当我删除页面顶部的php代码时,选择菜单和文本区域显示正常,但显然没有添加到dbhi,我已经完成了您所说的,但类别id没有添加到数据库中。这是我在问题中提到的create.php文件,如果您能快速浏览一下,那就太好了,为回答prompty@user2956943而欢呼,我已经在GitHub上向您发送了包含新代码的pull请求。谢谢Sergey的帮助。当我添加新代码并导航到创建页面时,没有显示任何内容。你知道为什么吗?@user2956943,看看页面的源代码。网页上没有HTML代码,但当我删除页面顶部的php代码时,选择菜单和文本区域显示正常,但显然没有添加到数据库中