0

オーケー、助けが必要だ。ユーザーが質問をして最大 4 枚の写真をアップロードできるページをデザインしようとしています。2 つのデータベース テーブル、質問と image_table があります。すべてが正しくアップロードされているので、それは私の問題ではありません。私が問題を抱えているのは、その質問にのみ対応する image_table データベースから画像を選択することです。これを行う方法がわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

画像が属する質問の ID を含むquestion_id列が必要です。image_table別のテーブルを参照する列を持つテーブルの概念は、外部キーと呼ばれます。

image_table次の SQL コマンドを使用して、既存の外部キーを追加できます。

ALTER TABLE image_table
ADD question_id integer DEFAULT NULL;

外部キー制約の追加:

ALTER TABLE image_table
ADD CONSTRAINT image_question_fk 
    FOREIGN KEY (question_id) 
    REFERENCES questions(question_id);

次に、(MySQL を使用していると仮定して、phpMyAdmin のようなツールを使用して) すべてのquestion_idフィールドをimage_table適切に入力します。

次に、質問によって画像をクエリできます。質問 5 の画像を取得したいとしましょう。次に、クエリは次のようになります。

SELECT image_table.*
FROM image_table, questions
WHERE image_table.question_id = question.question_id
    AND questions.question_id = 5;
于 2012-11-18T22:16:36.390 に答える
0

テーブルの画像に FOREIGN KEY があり、これはテーブルの質問の PRIMARY KEY を参照しています。その関係と呼ばれる...

削除時カスケードを追加でき、質問が削除されるたびに、対応する画像が削除されるのは本当に良いことです。

外部キーの例

CREATE TABLE questions (
questionid INT AUTO_INCREMENT,
question TEXT,
PRIMARY(questionid)
)

CREATE TABLE images (
imagesid INT AUTO_INCREMENT,
questionid INT NOT NULL,
path VARCHAR(255),
PRIMARY KEY (imageid),
FOREIGN KEY (questionid) REFERENCES questions(questionid)
)

GROUP_CONCAT を使用して、すべての画像パスを結果セットの配列に入れることができます。したがって、クエリの結果は 1 行のみになります。

SELECT *, GROUP_CONAT(i.path) AS images
FROM questions q
INNER JOIN images i ON i.questionid = q.questionid
WHERE q.questionid = $xy
GROUP BY q.questionid

- - - 編集 - -

あなたが説明したプロセスは、私には次のように見えます:

  1. ユーザーがアップロード フォームを送信する
  2. phpでフォームデータをキャッチします
  3. 画像などをアップロードします
  4. 質問と画像をデータベースに挿入します <-- $xy = mysql_insert_id() to var
  5. 上記のクエリで画像を選択します
  6. 結果をエコーする

- 編集 -

画像のアップロード フォームは質問とは別のものです。SQL選択は必要ありません...アップロードするパスと、アップロードする画像の名前を知っています

//uploading the image
if(!isset($_SESSION['questionImages'])) {
$_SESSION['questionImages'] = array();
}

$_SESSION['questionImages'][] = $dir.'/'.$_FILE['name'];

後で画像をエコーし​​たい場合は、 $_SESSION['questionImages'] 配列を使用するだけです

ユーザーが質問を送信した場合、セッション変数 questionImages をリセットする必要があります

于 2012-11-18T22:24:30.983 に答える