SQL插入后,PHP返回ID [uniqueidentifier]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL插入后,PHP返回ID [uniqueidentifier]相关的知识,希望对你有一定的参考价值。

就像标题说的那样,我希望在插入数据库后返回行的ID。

我有2个函数,其中一个用于连接数据库:

function db_connect() {
    $host = "host";
    $user = "user";
    $pwd = "pwd";
    $database = "db";
    $con;
    try{
        $conn = new PDO( "sqlsrv:Server= ".$host." ; Database = ".$database." ", $user, $pwd);
    }
    catch(Exception $e){
        die(print_r($e));
    }
    return $conn;
}

并且插入一个新记录:

function setTiptile($name,$cols,$rows) {
    $connect = db_connect();
    $query = "INSERT INTO data(ID, name, cols, rows) VALUES(NEWID(),?,?,?)";
    $stmt = $connect->prepare($query);
    $stmt->bindValue(1, $name);
    $stmt->bindValue(2, $cols);
    $stmt->bindValue(3, $rows);
    $stmt->execute();


    return $connect->lastInsertId('ID'); // This should work, but doesn't, why?

}

我需要最后一个函数来返回插入行的ID,我该怎么办?

编辑:就像标题说的那样,ID是唯一标识符,不知道是否会更改。

编辑:确定,显然我必须使用:$connect->lastInsertId('ID');,但这根本不返回任何内容。这可能是什么原因?在数据库中创建了新行。

答案

Manual

返回最后插入行的ID,或返回序列对象,具体取决于基础驱动程序。例如,PDO_PGSQL()要求您为以下对象指定序列对象的名称名称参数。

应该是这样的:

return $connect->lastInsertId('yourIdColumn');
另一答案

使用lastInsertId

lastInsertId
另一答案

(我的)解决方案:

lastInsertId()的参数必须是表名,而不是行名。除此之外,该表还必须具有参数已检查IDENTITY的行,这是要返回的行。

这得出的结论是,[[不可能用lastInsertId返回唯一标识符(),因为无法检查参数IDENTITY。

另一答案
非常感谢:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDdddd

以上是关于SQL插入后,PHP返回ID [uniqueidentifier]的主要内容,如果未能解决你的问题,请参考以下文章

sql server返回插入记录的ID(多条记录)

使用PHP在mysql中插入数据时返回最后一个id

xorm插入数据库后返回主键自增id

Laravel 5 插入数据后返回主键ID

我可以在 LINQ 插入后返回“id”字段吗?

插入php后获取生成的uuid