【发布时间】:2017-09-18 03:04:38
【问题描述】:
一点背景。我有一个 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);
}
?>
【问题讨论】:
-
那么,什么是语法错误?
-
Array ( [0] => 42000 [1] => 1064 [2] => 您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册以获取正确的语法在'lin,casa,lpo,cpl,cpo附近使用)值('0','0','N','1','6','6','6','1','6' '' 在第 1 行 ) array(1) { [0]=> array(9) { [0]=> string(1) "0" [1]=> string(1) "0" [2]=>字符串(1)“N”[3]=>字符串(1)“1”[4]=>字符串(1)“6”[5]=>字符串(1)“6”[6]=>字符串( 1) "6" [7]=> 字符串(1) "1" [8]=> 字符串(1) "6" } }