0

データベースに 3 つのテーブル (actors、category、actor_cats) があります。

データベース(mysql)に新しい情報を挿入するためにフォームを使用しています。ほとんどの情報はアクター テーブルに入ります。しかし、ラベル「カテゴリ」には、チェックボックスの入力タイプがあり、カテゴリテーブルから取得した 3 つのフィールド [アクション (id1)、コメディ (id2)、ドラマ (id3)] があります。この情報を自分のactor_cats テーブルに挿入したいと考えています。私がやりたいことは、actors テーブルに新しいアクターを作成し、actors_cats テーブルにチェックボックスの選択 (3 つのオプションすべてである可能性があります) を挿入することです。アクターIDとカテゴリIDとしてのこのテーブルなので、私が望むのは次のようなものです:

テーブルactor_cats

行 1 | アクターイド (1) | カテゴリ (1)

行 2 | アクターイド (1) | カテゴリーid (2)

例として...

mysqliを使用してこれを達成するにはどうすればよいですか?

前もって感謝します!

私はまだactor_catsテーブルに書き込めません。これは私がやっていることです:

// 新しいアクターを挿入した後

$jid = $mysql->insert_id;

if (isset($_POST['cats'])) {
$cats = $_POST['cats'];
} else {
$cats = array();
}   
$numCats = 0;
foreach ($cats as $catID) {

$cats_sql = "INSERT INTO actor_cats VALUES(?,?)";    
$stmt = $mysql->stmt_init();

if ($stmt->prepare($cats_sql)) {
$stmt->bind_param('ii', $jid, $catID);
$stmt->execute();

    if ($ok) {
      $numCats = $numCats + 1;
    } else {
      echo "<p>Error inserting $catID: " .
          $mysql->error . '</p>';

    } 
  }

<?php
else:
$cats = 'SELECT id, type FROM categories';
$stmt = $mysql->prepare($cats);
$stmt->execute();
$stmt->bind_result($catid,$cattype);

?>

チェックボックス領域のフォームで、カテゴリテーブルをフェッチして値を取得するため、フォームを送信すると、選択が挿入されます

 //excerpt from form
 <label>Category:</label><br />
 <?php while($row = $stmt->fetch()) :  ?> 
  <input type="checkbox" name="cats" value="<?php echo $catid; ?>" /><?php echo $cattype;   ?>
 <br /><br />   <?php  endwhile; ?>

これが明確であることを願っています!みんな助けてくれてありがとう!

4

2 に答える 2

0

チェックボックスにすべて同じ name 属性を与え、value 属性をカテゴリの id に設定します。次に、アクターを挿入し、 でその ID を取得し$mysqli->insert_idます。次に、別のクエリを実行して、actor の ID とカテゴリの ID を使用して、actor_cats テーブルに行を挿入します。

于 2009-08-11T16:43:55.383 に答える
0
$mysqli = new mysqli("host", "user", "password", "db");

$mysqli->query("INSERT INTO actors ..."); // your query to insert new actor

$id = $mysqli->insert_id;

// replace 1 with the category id
$mysqli->query("INSERT INTO actor_cats (actor_id, cat_id) VALUES ($id, 1)");
于 2009-08-11T16:46:09.373 に答える