使用PHP将多行Oracle结果集插入MYSQL

时间:2017-09-18 03:04:38

标签: php mysql oracle

一点背景。我有一个Oracle数据库,我试图查询,然后插入到本地MYSQL数据库,以便我可以生成预设报告。我一直试图找出这个插入到Mysql中一段时间​​了。我有正确运行的Oracle部分,但是当我尝试插入时,我在mysql中遇到了语法错误。

结果集返回8行,其中第一行是MYSQL中的Key。我真的想将我内置的插入查询转换为重复键更新语句中的插入,但我将如何正确地执行此操作。你们可以提供的任何帮助将不胜感激。     

$db1 = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=HOST)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME=Service)))';

$c1 = oci_connect("Userid", "Pass", $db1);   

$sql = oci_parse($c1, "select statement") ;

oci_execute($sql);

$i = 0;

   while ($row = oci_fetch_array($sql)){
   $i++;
    $k = $row[0];
    $dte = $row[1];
    $cus = $row[2];
    $odr = $row[3];
    $lin = $row[4];
    $cas = $row[5];
    $lpo = $row[6];
    $cpl = $row[7];
    $cpo = $row[8];
   };

$db_user = "userid";

$db_pass = "Pass";

$db = new PDO('mysql:host=host; dbname=databasename', $db_user, $db_pass);

$stmt = $db->prepare("INSERT INTO `cuspi` (k, dte, cus, odr, lin, casa, lpo, cpl, cpo) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");

$recordcount = count($k);
 for ($i = 0; $i < $recordcount; $i++) {
  $records[] = [
  $k[$i],
  $dte[$i],
  $cus[$i],
  $odr[$i],
  $lin[$i],
  $casa[$i],
  $lpo[$i],
  $cpl[$i],
  $cpo[$i],
 ];
 }


foreach ($records as $record) {
$stmt->execute($record);
}
?>

1 个答案:

答案 0 :(得分:0)

我能够找出答案。我错过了插入列引用的严重重音。

原始

$stmt = $db->prepare("INSERT INTO `cuspi` (k, dte, cus, odr, lin, casa, lpo, cpl, cpo) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");

固定

$stmt = $db->prepare("INSERT INTO `cuspi` (`k`, `dte`, `cus`, `odr`, `lin`, `casa`, `lpo`, `cpl`, `cpo`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");