-1

1 つのフォームから 2 つのデータベース テーブルにデータを投稿しようとしています。私のデータベースは次のように配置されています。

データベース 1 - 「ウォッチリスト」 :

  • ウォッチリスト_id
  • ユーザーID
  • 名前
  • 説明
  • カテゴリー

データベース 2 - 'watchlist_films' :

  • ウォッチリスト_id
  • film_id

私の現在の MySQL クエリは次のよう$query = "INSERT INTO watchlist_films (watchlist_id, film_id) VALUES ('$watchlist_name['watchlist_id']', '$rt_id') WHERE watchlists ('watchlist_id') = " . $watchlist_name['watchlist_id'];になりINNER JOINます:

他にどのような情報/コードを提供すればよいかわからないので、ここで詳細が少なすぎる場合は申し訳ありませんが、他に必要なものがある場合は、コメントを残してください。必要なものは何でも掲載します. 私は比較的 PHP の初心者なので、これが本当に単純な質問のように思えたら申し訳ありません!

コメントに基づく更新:

クエリの半分が機能するようになり、それを反映するようにロジックを更新しました。新しいクエリは、基本的に次のことを行います。

  • INSERT'watchlists'テーブルへの新しいウォッチリスト
  • SELECT watchlist_id'watchlists'テーブルからの新しいウォッチリストWHERE watchlist_name = $watchlist_name(作成したばかりの新しいウォッチリストの名前) およびuser_id = $user_id
  • INSERT watchlist_id(前のクエリから選択) ANDテーブルfilm_id'watchlist_films'

あなたのコメントに基づいて、私のクエリは次のようになります。

if ($submit == 'Submit') {
        require_once("db_connect.php");

        $watchlist_name = clean_string($_POST['watchlist-name']);
        $watchlist_description = clean_string($_POST['watchlist-description']);
        $watchlist_category = $_POST['watchlist-category'];

        $addWatchlist_bad_message = '';
        $addWatchlist_good_message = '';

        if ($db_server) {
            if (!empty($watchlist_name)) {
                $watchlist_name = clean_string($watchlist_name);
                $watchlist_description = clean_string($watchlist_description);
                mysql_select_db($db_database);

                // Insert new Watchlist into Watchlist index
                $insert_new_watchlist = "INSERT INTO watchlists (user_id, name, description, category) VALUES ('$user_id', '$watchlist_name', '$watchlist_description', '$watchlist_category')";
                mysql_query($insert_new_watchlist) or die("Insert failed. " . mysql_error() . "<br />" . $insert_new_watchlist);

                // Select new Watchlist ID
                $select_new_watchlist = "SELECT watchlist_id FROM watchlists WHERE name = " . $watchlist_name;
                $new_watchlist_id = mysql_query($select_new_watchlist) or die("Insert failed. " . mysql_error() . "<br />" . $select_new_watchlist);

                // Add film to new Watchlist
                $add_new_film = "INSERT INTO watchlist_films (watchlist_id, film_id) VALUES ('$new_watchlist_id', '$rt_id')";
                mysql_query($add_new_film) or die("Insert failed. " . mysql_error() . "<br />" . $add_new_film);
                $addWatchlist_good_message = '<div class="alert alert-success">Watchlist created successfully!</div>';?>
                <script>
                    $('a.add-watchlist').trigger('click');
                </script><?php 
            }
        } else {
            $addWatchlist_bad_message = '<div class="alert alert-error">Error: could not connect to the database.</div.';?>
            <script>
                $('a.add-watchlist').trigger('click');
            </script><?php
        }
        require_once("db_close.php");
    }

ただし、私のクエリは、新しい Watchlist を Watchlist インデックスに追加してから、新しく作成された Watchlist に映画を追加するまでの SELECT ステートメントで失敗しているようです。

4

2 に答える 2

2
try this


$query1 = "INSERT INTO watchlist_films (watchlist_id, film_id) 
VALUES ('" . $watchlist_name['watchlist_id'] . "', '$rt_id')"; 

 $query2= "INSERT INTO watchlists ('watchlist_id') 
VALUES (" . $watchlist_name['watchlist_id'] . ")";

$result = mysqli_multi_query($query1, $query2);
于 2013-03-23T11:32:05.033 に答える
0

テーブルごとに INSERT を記述する必要があります。

$mysqli->query("INSERT INTO watchlist_films (watchlist_id, film_id) 
  VALUES ('" . $watchlist_name['watchlist_id'] . "', '$rt_id')");
$mysqli->query("INSERT INTO watchlists ('watchlist_id') 
  VALUES (" . $watchlist_name['watchlist_id'] . ")");
于 2013-03-23T11:09:50.643 に答える