Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中的mysql\u insert\u id()中返回1?_Php_Mysql - Fatal编程技术网

如何在php中的mysql\u insert\u id()中返回1?

如何在php中的mysql\u insert\u id()中返回1?,php,mysql,Php,Mysql,这里的逻辑错误是mysql\u insert\u id()总是从0开始,我希望它从1开始递增,以此类推。我想知道为什么它会给我一个错误:键“PRIMARY”的重复条目“0”。我不想复制密钥,我只想添加它。 1234 这是我的密码: $insertID=mysql_insert_id(); //I want this to start at 1 if (isset($_POST['lastname']) && isset($_POST['firstname'])

这里的逻辑错误是
mysql\u insert\u id()
总是从0开始,我希望它从1开始递增,以此类推。我想知道为什么它会给我一个错误:键“PRIMARY”的重复条目“0”。我不想复制密钥,我只想添加它。 1234

这是我的密码:

$insertID=mysql_insert_id(); //I want this to start at 1

        if (isset($_POST['lastname']) && isset($_POST['firstname']) && isset($_POST['address']))
        {
            $sql="INSERT INTO contact(idnum, lastname, firstname, address) values ('$insertID','$_POST[lastname]','$_POST[firstname]','$_POST[address]')";

            if(!mysql_query($sql, $con))
            {
                    die("Error: " .mysql_error());
            }
            echo "Saved...";
        } 

你好像误会了

它不会生成一个ID供您在下一次查询中使用。它告诉您MySQL在上一次查询中生成的ID。所以

  • 如果您的表未使用自动生成的ID,则数据库不会返回生成的ID
  • 在插入任何内容之前,您正在请求生成的ID
  • 如果您使用的是手动ID,那么您的应用程序有责任生成一个唯一的ID。如果使用的是数据库生成的ID,则从INSERT语句中删除该ID,并在生成ID后从数据库中获取该ID



    另外,请注意,您的代码对完全开放,您似乎有误解

    它不会生成一个ID供您在下一次查询中使用。它告诉您MySQL在上一次查询中生成的ID。所以

  • 如果您的表未使用自动生成的ID,则数据库不会返回生成的ID
  • 在插入任何内容之前,您正在请求生成的ID
  • 如果您使用的是手动ID,那么您的应用程序有责任生成一个唯一的ID。如果使用的是数据库生成的ID,则从INSERT语句中删除该ID,并在生成ID后从数据库中获取该ID



    另外,请注意,您的代码对作弊是敞开的,因为表没有种子可以从添加具有该ID的虚拟记录开始,之后的一切都将从那里开始计算,这就是我所做的,像charmwhy一样在插入记录之前获取ID?我希望程序提供ID。只需从插入查询中删除列即可。数据库将在其自身上插入id,因为该列被设置为auto increment.cheat,因为表没有种子可从添加具有该id的虚拟记录开始,之后的所有内容都将从那里开始计算这就是我所做的,像charmwhy一样在插入记录之前获取ID?我希望程序提供ID。只需从插入查询中删除列即可。数据库将在其自身上插入id,因为列设置为自动递增。