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

时间:2017-12-22 00:42:29

标签: php mysql pdo

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

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

之后我需要进行查询

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

问题在于我的专栏

  

编号

不会一直打电话,有时名称是 id_user id_work 等。

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

1 个答案:

答案 0 :(得分:1)

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

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;
    }
}