Php SQL Server-id主键不自动递增

Php SQL Server-id主键不自动递增,php,sql-server,Php,Sql Server,我在sql server中有一个简单的表,其中包含以下内容: id int-主键标识规范:是,标识增量:1 名字-varchar 50 LastName-varchar 50 电子邮件-varchar50 我在下面设置了html表单,将数据插入到这个非常简单的表中,该表显示以下错误: <?php require ('connect.inc.php'); if(ISSET($_POST['FirstName'])&&ISSET($_POST['LastName'])&am

我在sql server中有一个简单的表,其中包含以下内容:

id int-主键标识规范:是,标识增量:1 名字-varchar 50 LastName-varchar 50 电子邮件-varchar50 我在下面设置了html表单,将数据插入到这个非常简单的表中,该表显示以下错误:

<?php

require ('connect.inc.php');

if(ISSET($_POST['FirstName'])&&ISSET($_POST['LastName'])&&ISSET($_POST['email'])){
    if(!empty($_POST['FirstName'])&&!empty($_POST['LastName'])&&!empty($_POST['email'])){
        $FirstName = $_POST['FirstName'];
        $LastName = $_POST['LastName'];
        $email = $_POST['email'];
        $sql_insert = "SET IDENTITY_INSERT test.dbo.clients ON
                INSERT INTO test.dbo.clients (id, FirstName, LastName, email) 
                VALUES('', '$FirstName', '$LastName', '$email')";
        $sql_select = "SELECT * FROM test.dbo.clients";
        $sql_insert_query = odbc_exec($con, $sql_insert);       
        }
    else{
        echo "Please input fields";
        }
}
else{
    echo "Not set";
}

/*$sql = "INSERT INTO clients ()
        VALUES ()"
*/
?>

<html>
    <body>
        <table border="2">
            <form action="inputform.php" method="POST">
                <tr>
                    <td>First name:</td>
                    <td><input type="text" name="FirstName"></td>
                </tr>
                <tr>
                    <td>Last name:</td>
                    <td><input type="text" name="LastName"></td>
                </tr>
                <tr>
                    <td>e-mail:</td>
                    <td><input type="text" name="email"></td>
                </tr>
                <tr>
                    <td><input type="submit" name="submit" value="submit"></td>
                </tr>
            </form> 
        </table>
    </body>
</html>
下面的错误表示id PK不是自动删除:

违反主键约束“PK_客户端”。无法插入 对象“dbo.clients”中存在重复密钥

附件是显示如何配置id密钥的图像

提前谢谢。
J

对php的了解不多。但是改变这一行&让sql处理标识键值

 $sql_insert = "
                INSERT INTO test.dbo.clients (FirstName, LastName, email) 
                VALUES('$FirstName', '$LastName', '$email')";

因为您正在尝试手动插入标识值。请注意,在启用的位置:

SET IDENTITY_INSERT test.dbo.clients ON
请注意您的INSERT语句:

INSERT INTO test.dbo.clients (id, FirstName, LastName, email) 
VALUES('', '$FirstName', '$LastName', '$email')
数据库引擎将提供自动增量标识,除非您告诉它不要这样做。这就是你正在做的。在数字列中插入空字符串、插入空主键等都是非常糟糕的想法

如果希望数据库提供标识,则不要在代码中提供标识:

INSERT INTO test.dbo.clients (FirstName, LastName, email) 
VALUES('$FirstName', '$LastName', '$email')

另外,请注意,您的代码非常容易受到攻击。你会想利用事先准备好的陈述。目前,您正在允许用户在您的服务器上执行自己的代码。

这就是SET IDENTITY_INSERT test.dbo.clients on的功能。谢谢@David。我知道它很脆弱;我刚刚开始学习一些开发,我只是在测试。感谢您的帮助: