在DUPLICATE键与foreach内的绑定参数

时间:2017-05-09 05:07:50

标签: php mysql pdo

我正在尝试插入/更新项目列表及其描述符。它们是动态填充的,值通过post抓取为数组。

然而似乎它们不能以这种方式被识别为重复键?

// Inputs being used
// <input type="hidden" name="menu-id[]" value="' . $page_id . '">
// <input type="hidden" name="menu-title[]" value="' . $page_title . '">
// <input type="hidden" name="menu-permalinks[]" value="' . $page_permalink . '">

$sql = "INSERT INTO 'menu' (`position`, `nav_id`, `nav_title`, `nav_permalink`)
        VALUES (?,?,?,?
        ON DUPLICATE KEY
        UPDATE `position`=VALUES(`position`), `nav_id`=VALUES(`nav_id`), `nav_title`=VALUES(`nav_title`), `nav_permalink`=VALUES(`nav_permalink`);";

$stmt = $conn->prepare($sql);
$stmt->bind_param("iiss", $param_pos, $param_id, $param_title, $param_permalink);

// Arrays from hidden input fields
$current_ids = $_POST['menu-id'];
$current_titles = $_POST['menu-title'];
$current_permalinks = $_POST['menu-permalinks'];

foreach ($current_ids as $key => $current_id) {
  $param_pos = '';
  $param_id = $current_id;
  $param_title = $current_titles[$key];
  $param_permalink = $current_permalinks[$key];

  $stmt->execute();
}

$stmt->close();
$conn->close();

这将添加重复的记录,我只想要新的记录!

感谢任何想法。

编辑:

主键为id并自动递增

0 个答案:

没有答案