使用php + mysqli从表中的复选框插入值

时间:2009-08-11 16:39:04

标签: php insert mysqli

我的数据库中有3个表(actor,categories,actor_cats)。

我正在使用表单在数据库中插入新信息(mysql)。大多数信息都进入了参与者表。 但是在标签“类别”中,我有一个复选框输入类型,我从类别表[action(id1),comedy(id2),drama(id3)]获得3个字段。我想在actor_cats表中插入此信息。 我想要做的是在actors表中创建一个新的actor,并在actors_cats表中插入复选框选项(可能是所有3个选项)。这个表作为actor id和类别id,所以我想要的是这样的:

表actor_cats

第1行| actorid(1)| categoriesid(1)

第2行| actorid(1)| categoriesid(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);

&GT;

在复选框区域的表单中,我获取了我的类别表并获取了值,因此当我提交表单时,我的选择将被插入

 //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; ?>

希望这很清楚! 感谢所有人的帮助!

2 个答案:

答案 0 :(得分:0)

您可以为复选框指定所有相同的名称属性,并将value属性设置为类别的ID。然后插入actor并使用$mysqli->insert_id获取其id。然后执行另一个查询,在actor_cats表中插入一行,其中包含actor的id和类别的id。

答案 1 :(得分: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)");