使用PHP插入Multi Row Oracle结果设置为MySQL



一点背景。我有一个试图查询的Oracle数据库,然后插入到本地的MySQL数据库中,以便可以生成罐头报告。我一直在试图找出一段时间以上的MySQL插入。我的Oracle部分正常运行,但是当我尝试插入MySQL中的语法错误时。

结果集带有8行返回,第一个行是mySQL中的键。我真的很想将此插入查询转换为重复的密钥更新语句中的插入件中,但是我对如何正确执行此操作感到迷失了。你们可以提供的任何帮助将不胜感激。

$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);
}
?>

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

原始

$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 (?, ?, ?, ?, ?, ?, ?, ?, ?)");

最新更新