前提・実現したいこと
簡易的なブログサイトを作成しています。
行いたいことは、1つ記事を投稿するとき複数のタグを選択して投稿できるようにしたいです。
投稿後は記事に選択したタグが表示されるような状態にしたいです。
テーブル
記事テーブル、中間テーブル、タグテーブルの3つを作成しました。
記事テーブルのidが中間テーブルと紐づいており、
その中間テーブルのidに選択されたタグidが入るイメージです。
わからないこと
肝心のSQL文と、値の挿入方法の流れがわかりません。
困っていることは、記事を1つ追加する時タグidを複数選びまとめて記事テーブルに格納しますが、
その時に、中間テーブルには記事idは追加されていないため、タグテーブルと記事テーブルが紐づかず、中間テーブル先にあるタグidが取得できないのです。
行ったこと
記事idを作成しないと何もできないとわかったので、以下の方法で進めてみました。
しかし3つめでエラーが出てしまい、つまづいている状態です。どなたか知恵を貸していただきたいです。
そもそもこれで合っているのかよくわからないのですが...
- タグidのnullをOKとし記事追加
- nullの記事idを取得
- 中間テーブルに記事idと選択されたタグidを格納
- 記事テーブルのタグidを中間テーブルのidにUPDATE
コード(3つ目のSQL文)
$sql = 'INSERT INTO tag_article (article_id, tag_id) VALUES (:article_id, :tag_id)'; $sth = $pdo -> prepare($sql); $sth -> bindValue(':article_id', $article_idddd,PDO::PARAM_INT); $sth -> bindValue(':tag_id', $_SESSION['tag_id'],PDO::PARAM_INT); $sth -> execute(); $article_tag = $sth -> fetch();
エラー文言
SQLSTATE[HY000]: General error
環境
PHP,mySQL
回答2件
あなたの回答
tips
プレビュー