21

我无法解决我的问题,这是我得到的 mysql 错误:

错误:键“PRIMARY”的重复条目“0”

当我在数据库中有一条记录时,我可以编辑和更新我的数据,但是当我添加两行时,我得到了错误。

部分图片来自数据库

当我更改行时,行 ID 下降到 0,这是一个问题,因为我无法编辑其他行。

当我尝试更改行时,第一行 ID 下降到 0 数据库

在此处输入图像描述

CREATE TABLE `dati` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `title` varchar(255) NOT NULL,
 `value1` varchar(255) NOT NULL,
 `value2` varchar(255) NOT NULL,
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 PACK_KEYS=1

更新代码:

<?php // Izlabot datus datubāzē!
$titletxt = $_POST['title_edit'];
$value1 = $_POST['value1_edit'];
$value2 = $_POST['value2_edit'];

if(isset($_POST['edit'])){
$con=mysqli_connect("localhost","root","","dbname");
if (mysqli_connect_errno())
  {
  echo "Neizdevās savienoties ar MySQL: " . mysqli_connect_error();
  }
$sql="UPDATE dati SET ID='$ID',title= '$titletxt',value1='$value1',value2='$value2' WHERE 1";
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo '<script>
        alert(" Ieraksts ir veiksmīgi labots! ");

        window.location.href = "index.php";
    </script>';
mysqli_close($con);
}
?>

从表格:

<?php
            $con=mysqli_connect("localhost","root","","dbname");
            if (mysqli_connect_errno())
              {
              echo "Neizdevās savienoties ar MySQL: " . mysqli_connect_error();
              }
            $result = mysqli_query($con,"SELECT * FROM dati");
            while($row = mysqli_fetch_array($result))
              {
              echo "<tr>";
                  echo "<td><input id='titled' type='text' name='title_edit' value='" . $row['title'] . "'></td>";
                  echo "<td><input id='value1d' type='text' name='value1_edit' value='" . $row['value1'] . "'></td>";
                  echo "<td><input id='value2d' type='text' name='value2_edit' value='" . $row['value2'] . "'></td>";
                  echo "<input type='hidden' name='id' value='" . $row['ID'] . "'>";
                  echo "<td><button name='edit' id='edit_btn' class='frm_btns' value='" . $row['ID'] . "'>Edit</button></td>";
              echo "</tr>";
              }
            mysqli_close($con);
        ?>

它无法读取 ID 的值,因为返回了 0。

4

8 回答 8

35

对于那些因为问题标题而到达这个问题的人(就像我所做的那样),这解决了我的问题:

此错误可能表明表的 PRIMARY KEY 未设置为 AUTO-INCREMENT,(并且您的插入查询未指定 ID 值)。

解决:

检查表上是否设置了 PRIMARY KEY,并且PRIMARY KEY 设置为 AUTO-INCREMENT。

如何使用 phpmyadmin 向 mysql 数据库中的列添加自动增量?

于 2015-11-13T05:53:58.090 回答
4

问题是您的代码尝试更改数据中的每一行,将主键更改为 $ID 中的值。这没有在您的代码中的任何地方设置,并且可能被强制转换为 0

$sql="UPDATE `dati` SET `ID`='$ID',`title`= 
'$titletxt',`value1`='$value1',`value2`='$value2' WHERE 1";

主键值应发送到表单并返回,以便您的代码可以处理它,但应保留该值,因此....

$sql="UPDATE `dati` SET `title`= 
'$titletxt',`value1`='$value1',`value2`='$value2' WHERE `ID`=$ID";

您还应该阅读有关 MySQL 注入的内容 - 即使您已经修复了此处的错误,任何人都可以对您的数据库做任何他们想做的事情。

于 2013-09-08T22:01:46.427 回答
3

像(在我的情况下)这样的错误日志,我使用的是Aurora DB:

PHP 消息:WordPress 数据库错误重复条目 '0' for key 'PRIMARY' for query INSERT INTO `date173_postmeta

如何使用MySQL Workbench修复它:

1-在您的数据库中连接,并在我的情况下转到有问题的表date173_postmeta

2- 选择工具图标:

在此处输入图像描述

3- 在右侧的窗口/选项卡中,选择 AI 复选框单击应用按钮

在此处输入图像描述

按照最后的步骤,我的问题消失了。

于 2019-03-24T01:49:51.513 回答
2

尝试这个:

ID int(11) PRIMARY KEY AUTOINCREMENT(1,3)
于 2013-09-08T21:43:57.130 回答
2

问题在set ID = $ID

尝试删除它,所以代码应该是

$sql="UPDATE `dati` `title`=        '$titletxt',`value1`='$value1',`value2`='$value2' WHERE 1";

一定要在哪里改变它,因为它会用这些值更新每一行

于 2013-09-08T21:41:17.050 回答
2

只要确保你的初级键也是人工智能。

于 2016-02-04T06:31:12.800 回答
1

我一直在努力解决这个问题。我的表开启了自动增量 (AI) 在我开始修改记录之前,我尝试在 phpMyAdmin 中进行简单修复。转到 SQL 选项卡并依次运行每个命令。

修复表 wp_options 修复表 wp_users 修复表 wp_usermeta

这对我有用,并允许我登录。

于 2021-07-29T18:05:23.540 回答
0

我正在使用 phpmyadmin,所以转到 db,搜索 wp_postmeta tabel add AI(auto-increment) to meta_id 保存更改

在此处输入图像描述

于 2021-09-06T11:35:08.287 回答