2016-03-03 49 views
0

我与特定的问题斗争,我需要插入数据到不同结构的多个表。插入到所有列而不是指定每个[MYSQL或PSQL]

大气压我有我的剧本是这样的:

public function insertToPsql($manufacturer_code, $main_type, $subtype_code, $manufacturer, $model, $submodel) 
    { 
     try { 
      $con = new PDO(PSQL_DB_HOST, PSQL_DB_HOST, PSQL_DB_HOST); 
      $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = "INSERT INTO car_type(manufacturer_code, main_type, subtype_code, manufacturer, model, submodel) VALUES(:manufacturer_code, :main_type, :subtype_code, :manufacturer, :model, :submodel)"; 
      $stmt = $con->prepare($sql); 
      $stmt->bindValue('manufacturer_code', $manufacturer_code, PDO::PARAM_STR); 
      $stmt->bindValue('main_type', $main_type, PDO::PARAM_STR); 
      $stmt->bindValue('subtype_code', $subtype_code, PDO::PARAM_STR); 
      $stmt->bindValue('manufacturer', $manufacturer, PDO::PARAM_STR); 
      $stmt->bindValue('model', $model, PDO::PARAM_STR); 
      $stmt->bindValue('submodel', $submodel, PDO::PARAM_STR); 
      $stmt->execute(); 
     } 
     catch(PDOException $e) { 
      echo $e->getMessage(); 
      exit; 
     } 
    } 

的事情是,这是不是最好的办法,如果我需要随时修改它为每个表(很多我的表有大约40列)。

好东西是,我总是插入所有的人。有什么办法如何插入到所有列和不指定数据,但只是给它一个数组或对象的所有数据?

喜欢的东西:

$sql = "INSERT INTO car_type VALUES(:$data)"; 
+0

您在使用MySQL或PostgreSQL?你有两个标签。 – Barmar

回答

1

如果你有一个数组,其元素是相同的顺序在表中的列,你可以这样做:

$values = array($manufacturer_code, $main_type, $subtype_code, $manufacturer, $model, $submodel); 
$placeholders = implode(',', array_fill(0, count($values), '?')); 
$sql = "INSERT INTO car_type VALUES ($placeholders)"; 
$stmt = $con->prepare($sql); 
$stmt->execute($values); 
相关问题