如何获取最后插入的ID,以及PDO列的名称?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取最后插入的ID,以及PDO列的名称?相关的知识,希望对你有一定的参考价值。

我正在构建一个可以动态插入的QueryBuilder,之后我想返回插入的最后一行,到目前为止我正在使用pdo获取最后一个插入的Id。

$last_id =  $this->pdo->lastInsertId();

之后我需要做一个查询

$statement = $this->pdo->prepare("SELECT * FROM {$table_name} WHERE id = :id");

问题是我的专栏

ID

不会一直这样调用,有时它的名称是id_user或id_work等。

我需要的是获取PDO获取最后一个Id的列名。

答案

没有直接的方法来了解字段名称,并且有两种解决方案。

1)如果表格较少,您可以构建一个数组来直接保存“id”字段。例如 :

$tables = ["table_1" : "id_user", "table_2" : "id_work"]

并且您可以在SQL中使用$ tables [$ table_name]而不是id。

2)如果您不知道将使用哪些表,则可以在生成查询sql之前直接通过PDO分析表。

例如

$stmt = $pdo->prepare('DESC tablename');
$stmt->execute();  
$table_fields = $stmt->fetchAll(PDO::FETCH_COLUMN); 
foreach($table_fields as $field){
    if($field["Extra"] == "auto_increment"){
       $field_id_name = $field["Field"];
       break;
    }
}

以上是关于如何获取最后插入的ID,以及PDO列的名称?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDO 准备好插入后获取最后一个插入 ID

如何在使用 PHP-PDO 记录查询时获取最后一个插入 ID

PDO 获取多个插入 ID

如何在没有'id'列的MySql中获取最后插入的记录?

如果需要,插入更新 pdo mysql 查询并获取最后插入的 id

你如何从一个类中获取最后插入的 ID 到重定向 [重复]