1

データベースに 2 つのテーブルがあり、1 つはカテゴリ (cat_id と猫の名前)、もう 1 つはジョーク (joke_id とジョーク) であるという問題があります。ユーザーがカテゴリを選択してジョークを説明できるようにしたいのですが、これがデータベースに入力され、ジョークのカテゴリが参照されるため、ジョークを特定のカテゴリ ページに表示できます。これまでのところ、ジョークをデータベースにアップロードできましたが、ジョークを特定のカテゴリにアップロードできませんでした。

ここにジョークテーブルのコードがあります

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 の完全なファイルは次のとおりです: https://github.com/sambarrowclough/jokes.git

4

3 に答える 3

1

ジョークを特定のカテゴリに関連付ける方法を探しているのではないかと思います。それが、 R がRDBMSで表すものなので、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 ;

上記は外部キー制限を追加しませんが、カテゴリを設定する必要があります (NOT NULL として)。それにもかかわらず、次の方法で新しいエンティティをデータベースに追加できます。

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

$category_id は、ジョークが属するカテゴリの ID を表すと予想されます。

于 2013-11-05T16:14:59.540 に答える
0

jokesジョークをカテゴリにリンクするには、対応するフィールドをテーブルに追加する必要があります。

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_idジョークに適用されるカテゴリが表示されるので、テーブルから対応するカテゴリ情報を取得できますcategories

于 2013-11-05T16:09:02.540 に答える
0

テーブルに ajokeを追加することはできません。categoryテーブル内のインデックス付きフィールドでカテゴリを参照する必要があります。

+=============+  +=============+
| category    |  | jokes       |
+=============+  +=============+
| category_id |  | joke_id     |
+-------------+  +-------------+
| name        |  | joke        |
+-------------+  +-------------+
                 | category_id |
                 +-------------+

次に、ジョークを取得すると、それがどのカテゴリに属しているかがわかります。
これは、データベースの設計において非常に基本的なことです。データベースの関係についてもう少し学ぶ必要があります。

フィールドにインデックスを作成することを忘れないでください(パフォーマンスを大幅に向上させるため):

CREATE INDEX "idx_category" ON "jokes" (category_id);
于 2013-11-05T16:08:33.837 に答える