0

作为一个新程序员,我很难弄清楚如何准确地编码这种情况。我已经通过 stackoverflow 采取了一些解决方案,但是这个似乎并没有像我想象的那样工作。我有一个标签可以正确放入一个选定的项目,但如果我放入两个或三个,它会给我数字。即,如果我选择了 3 个 id 为 3、5 和 8 的选项,它会变成 358,而不是创建 3-3、3-5、3-8 的多对多目录关系。

目的是该表格正在创建一个新角色,该角色可能会获得一些缺点。然后将这些缺点与新字符的唯一 ID 联系起来。

$query2 = implode ( "",$_POST['did']);
                $sql="INSERT INTO player_disadvantage
                (disadvantageid,characterid)
                VALUES ('".$query2."',LAST_INSERT_ID())"
                ;

  <tr>
<td>Disadvantages</td>
<td>
  <?php

$result = $mysqli->query("SELECT * FROM disadvantages");
echo '<SELECT multiple="multiple" id="did" name="did[]">';
  while($row1 = $result->fetch_assoc()) {
  $disadvantages = $row1['name'];
  $disadvantagesid = $row1['did'];
  $disadvantagescost = $row1['cost'];
echo "<option value='".$disadvantagesid."'>". '+' . ' ' . $disadvantagescost . ' ' . $disadvantages .  "</option>";   
  }
       echo '</select>';
?>
    </td>

我唯一的猜测是找到一种移动代码的方法,以便将 LAST_INSERT_ID() 与每个劣势 id 放在一起。我不确定如何编码。

4

1 回答 1

0

尝试这个:

$values = implode(',', array_map(function($x) {
    return "('" . mysql_real_escape_string($x) . "', LAST_INSERT_ID())"; },
  $_POST['did']));
$sql = "INSERT INTO player_disadvantage (disadvantageid, characterid) VALUES $values";

这将创建一个如下所示的查询:

INSERT INTO player_disadvantage (disadvantageid, characterid)
VALUES ('3', LAST_INSERT_ID()),
       ('5', LAST_INSERT_ID()),
       ('8', LAST_INSERT_ID())

添加多行。

于 2013-06-20T04:05:08.937 回答