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

eoigrqb6  于 2023-04-19  发布在  Mysql
关注(0)|答案(8)|浏览(259)

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

当我在数据库中有一条记录时,我可以编辑和更新我的数据,但是当我添加两行时,我得到错误。
数据库中的一些图片
当我更改行时,行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。

jchrr9hc

jchrr9hc1#

对于那些因为问题标题而到达这个问题的人(就像我一样),这解决了我的问题:
此错误可能表明表的PRIMARY KEY未设置为AUTO-INCREMENT,(并且插入查询未指定ID值)。
要解决:
检查表中是否设置了PRIMARY KEY,PRIMARY KEY是否设置为AUTO-INCREMENT。
如何使用phpmyadmin在mysql数据库中添加列自动递增?

nfzehxib

nfzehxib2#

错误日志如下(在我的例子中),我使用***Aurora***DB:
PHP消息:WordPress数据库错误重复的条目'0'为关键'PRIMARY'查询INSERT INTO date173_postmeta 如何使用***MySQL Workbench***修复: 1-连接到您的数据库,然后转到问题所在的表,在我的示例中是date173_postmeta`
2-选择工具图标:

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

在最后一步之后,我的问题消失了。

c3frrgcw

c3frrgcw3#

问题是您的代码试图更改数据中的每一行,将主键更改为$ID中的值。

$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注入-即使在您修复了这里的错误之后,任何人都可以对您的数据库做任何他们想要的事情。

xurqigkl

xurqigkl4#

试试这个:

ID int(11) PRIMARY KEY AUTOINCREMENT(1,3)
cnwbcb6i

cnwbcb6i5#

set ID = $ID中的问题
尝试删除它,这样代码应该是

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

一定要更改它,因为它会用这些值更新任何一行

rbpvctlc

rbpvctlc6#

只要确保您的primery密钥也是A-I即可。

cnwbcb6i

cnwbcb6i7#

我一直在努力解决这个问题。我的表已经打开了自动增量(AI)在我开始修补记录之前,我尝试了一个简单的修复在phpMyAdmin。转到SQL选项卡,依次运行每个命令。
REPAIR TABLE wp_options REPAIR TABLE wp_users REPAIR TABLE wp_usermeta
这对我来说是个好主意,允许我登录。

4dbbbstv

4dbbbstv8#

我使用的是phpmyadmin,所以转到db,搜索wp_postmeta表添加AI(自动递增)到meta_id保存更改

相关问题