如何将自动增量值存储到php变量中?

如何将自动增量值存储到php变量中?,php,sql,auto-increment,Php,Sql,Auto Increment,我已经在下面编写了我的sql,它可以正常工作。由于我已将我的详细信息\u id设置为自动增量,我必须使用Last\u Insert\u id(),以便数据库使用自动增量的下一个id。但是,我希望将该值存储到php变量中。可能吗 $addquery = "INSERT INTO Particulars (Particulars_ID, Name, Identification_Number, Number, Nationality, Status, Remarks)

我已经在下面编写了我的sql,它可以正常工作。由于我已将我的详细信息\u id设置为自动增量,我必须使用Last\u Insert\u id(),以便数据库使用自动增量的下一个id。但是,我希望将该值存储到php变量中。可能吗

 $addquery = "INSERT INTO Particulars (Particulars_ID, Name, Identification_Number, Number, Nationality, Status, Remarks)
                    VALUES(LAST_INSERT_ID(),'$_POST[newname]', '$_POST[newic]','$_POST[newnumber]','$_POST[newnationality]','$_POST[newstatus]','$_POST[newremarks]')";

当您将一行插入具有
AUTO_INCREMENT
字段的表中时,该字段将根据名称自动递增。你不需要告诉MySQL增加它,你根本不需要为自动增加字段提供一个值

首先,从查询中删除对
LAST\u INSERT\u ID()
的调用:

$addquery = "INSERT INTO Particulars (Name, Identification_Number, Number, Nationality, Status, Remarks)
                '$_POST[newname]', '$_POST[newic]','$_POST[newnumber]','$_POST[newnationality]','$_POST[newstatus]','$_POST[newremarks]')";
请注意,我是如何从查询中完全删除了
详细信息\u ID

第二,这与您的问题没有直接关系,但您的查询容易受到SQL注入的攻击。接受用户输入时,应避免将其连接到查询,而应使用准备好的语句并按如下方式修改查询:

$addquery = "INSERT INTO Particulars (Name, Identification_Number, Number, Nationality, Status, Remarks)
VALUES(?,?,?,?,?,?)";
然后,您可以准备一条语句并绑定
$\u POST
中的值。这基本上净化了用户输入。阅读更多关于准备好的声明

开始编辑

使用
PDO
将实值绑定到
占位符的示例:

//First prepare the statemt
$db->prepare("INSERT INTO Particulars (Name, Identification_Number, Number,Nationality, Status, Remarks)
              VALUES(?,?,?,?,?,?)";
//Start binding values to placeholders
$db->bindValue(1, $_POST['name']);
$db->bindValue(2, $_POST['Identification_Number'];
$db->bindValue(3, $_POST['Number'];
//Bind the rest of the values in the same way
编辑结束

关于最后一个插入行的id,您需要运行单独的查询来获取它。因此,在运行上述查询之后,如果插入成功,您可以 运行如下查询:

$addquery = "INSERT INTO Particulars (Name, Identification_Number, Number, Nationality, Status, Remarks)
VALUES(?,?,?,?,?,?)";

从Pariculars中选择LAST\u INSERT\u ID()作为ID

您使用的mysql库是什么?请小心直接使用查询中的$\u POST变量。这使您的网站容易受到SQL注入的攻击。首先,db本身也要注意自动递增列
$last_id=ladt_insert_id()您可以这样做,但它仅在程序执行之前可用。那么你的确切意思是什么呢?
将自动增量值存储到php变量中?
@Anant是的,正如你的代码所建议的,我想将id设置到a变量中。我之所以要设置为变量,是因为我有另一个表单,用户必须在其中插入他们的专业知识,并且我已经创建了一个数据库表detacts\u experties,其中它将detacts\u id和专业知识存储为主键(复合键)。因此,如果我可以存储详细信息\u id,我就可以使用该id在下一个表单的组合中设置它们。@u\u mulder-hmm我不确定你所说的mysql库是什么意思。抱歉,这里的新手哈哈,但我使用mysqliohhh嗨,我对这个很陌生。只是确认一下,sql注入是否类似于如果一个人在文本框1=1中键入内容,它仍然允许用户进入?如果我把它改成值(?,,,,,,,?)"; 那么,我应该在哪里将我的$\u POST设置为这些值呢?非常感谢!:)@Samuel是的,这就是SQL注入。在准备语句后,可以使用绑定方法将实际值绑定到占位符。有多种方法可以做到这一点。我编辑了我的答案,加入了一个例子,但这不是唯一的方法。检查
mysqli
prepared语句和
PDO
prepared语句,找出最适合您的语句