我正在构建一个可以动态插入的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的列名。
答案 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;
}
}