【问题标题】:why can't i insert new values into my combined primary key?为什么我不能在我的组合主键中插入新值?
【发布时间】:2020-02-28 22:38:21
【问题描述】:

我想将值插入到我的组合主键中。但是,我只收到错误消息 Duplicate entry '1-16' for key 'PRIMARY' 我确信没有连接问题,因为以前的 SELECT 查询已经工作,并且站点上的其他所有内容都在运行。下面是我的段代码。我非常感谢所有的帮助,但由于我是初学者,我真的很喜欢简单明了的答案:) 提前致谢!

<form  method="post">
<select  name="sport_id">
  <?php
$sql= "SELECT * FROM sport";
 $resultat= $kobling->query($sql);
 while ($rad = $resultat->fetch_assoc()) {
   $sport_id=$rad["sport_id"];
   $sportName=$rad["name"];

   echo "<option value='$sport_id'> $sportName </option>";
 }
   ?>
</select>

<select name="person_id">
  <?php
$sql= "SELECT person_id, fname, lname FROM person";

$resultat= $kobling->query($sql);
while ($rad= $resultat->fetch_assoc()) {
  $person_id=$rad["person_id"];
  $fname= $rad["fname"];
  $lname =$rad["lname"];
  $navn= $fname. " ". $lname;
  echo "<option value='$person_id'> $navn </option>";
  // code...
}
 ?>
</select>

Året du startet:
<input type="number" name="startyear" value="">

<input type="submit" name="leggtil3" value="Legg til">

</form>

<?php
if (isset($_POST["leggtil3"])) {
  $person_id=$_POST["person_id"];
  $sport_id = $_POST["sport_id"];
  $startyear=$_POST["startyear"];

$sql= "INSERT INTO personsport (sport_id, person_id, startyear) values ('$sport_id', '$person_id', '$startyear')";
if ($kobling->query($sql)) {
echo "koblingen $sql ble gjennomført";
}
else {
  echo "det var et problem med $sql ($kobling->error)";
}
}

 ?>


【问题讨论】:

  • MySQL SQL Server。你实际上在使用什么?我已经删除了冲突的标签。请重新标记您实际使用的 RDBMS,并且该 RDBMS。谢谢。
  • 还有没有办法删除相同的行,所以你只得到唯一的行?
  • 您的代码易受 SQL 注入攻击。您应该使用准备好的语句。

标签: php mysql sql database forms


【解决方案1】:

您的 INSERT 正在尝试为 PRIMARY 字段分配非唯一组合。 Auto Increment 可以搞砸了;确保不采用序列中的下一个数字。

Mysql Docs

更新 InnoDB 表中现有的 AUTO_INCREMENT 列值 不会像对 MyISAM 那样重置 AUTO_INCREMENT 序列,并且 NDB 表。

(看起来您只是两次输入同一个人和运动。由于您的索引,这些字段的组合必须是唯一的。)

【讨论】:

    【解决方案2】:

    主键 1 - 16 已在数据库中分配。检查数据库以确保您的下一个自动增量值不包含任何这些值。

    【讨论】:

      猜你喜欢
      • 2021-10-01
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2016-12-26
      • 1970-01-01
      相关资源
      最近更新 更多