我正在努力使以下代码正常工作。运行它时,不会发生SQL或PHP错误,并且运行平稳。
既不插入新记录,也不更新旧记录。
基本功能是读取csv文件并将其导入MYSQL数据库。
<?php
//DB connect
$db = mysqli_connect("127.0.0.1", "adm", "???", "ip-miniapps");
//DB connection check
if (!$db) {
$txt = "\r\nupdate_cron.php - ".date("y-m-d");
$txt .= "\r\nError: Can't connect to MySQL." . PHP_EOL;
$txt .= "\r\nDebug-Fehlernummer: " . mysqli_connect_errno() . PHP_EOL;
$txt .= "\r\nDebug-Fehlermeldung: " . mysqli_connect_error() . PHP_EOL;
$myfile = file_put_contents('/www/website_ip-miniapps/scripts/executables/update_cron.log', $txt.PHP_EOL , FILE_APPEND | LOCK_EX);
exit;
}
//START - update routine for table app_all_supplier_master_data
if (($handle = fopen("/www/website_ip-miniapps/interfaces/SAP/supplier_md.csv", "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
//remove excess field
while(count($data)>13)
{
array_pop($data);
}
//mysqli-real_escape_string
$i=0;
while($i<=12)
{
$data[$i]=mysqli_real_escape_string($db, $data[$i]);
$i++;
}
$line = implode("','", $data);
$query = "INSERT INTO `app_all_supplier_master_data` (`supplier_code`,`name_1`,`name_2`,`street`,`zip`,`city`,`country`,`ekorg`,`supplier_node`,`node_name`,`classification`,`gbc`,`gbc_name`) VALUES('";
$query .= $line;
$query .= "') ON DUPLICATE KEY UPDATE
`supplier_code`='{$data[0]}',
`name_1`='{$data[1]}',
`name_2`='{$data[2]}',
`street`='{$data[3]}',
`zip`='{$data[4]}',
`city`='{$data[5]}',
`country`='{$data[6]}',
`ekorg`='{$data[7]}',
`supplier_node`='{$data[8]}',
`node_name`='{$data[9]}',
`classification`='{$data[10]}',
`gbc`='{$data[11]}',
`gbc_name`='{$data[12]}'";
mysqli_query($db, $query) or die(mysqli_error($db));
}
fclose($handle);
}
//END - update routine for table app_all_supplier_master_data
//DB close
mysqli_close($db);
$txt = "\r\nupdate_cron.php - ".date("y-m-d")." - Success";
$myfile = file_put_contents('/www/website_ip-miniapps/scripts/executables/update_cron.log', $txt.PHP_EOL , FILE_APPEND | LOCK_EX);
?>
我回应了$ query,但什么也看不到。
INSERT INTO `app_all_supplier_master_data`
(`supplier_code`,`name_1`,`name_2`,`street`,`zip`,`city`,
`country`,`ekorg`,`supplier_node`,`node_name`,`classification`,
`gbc`,`gbc_name`)
VALUES('Vendor','Name 1','Name 2','Street','PostalCode','City',
'Cty','POrg','Hi.lv.hier',
'Vendor number of higher-level','Preisausz.','PGr',
'Description')
ON DUPLICATE KEY UPDATE `supplier_code`='Vendor',
`name_1`='Name 1',
`name_2`='Name 2',
`street`='Street',
`zip`='PostalCode',
`city`='City',
`country`='Cty',
`ekorg`='POrg',
`supplier_node`='Hi.lv.hier',
`node_name`='Vendor number of higher-level',
`classification`='Preisausz.',
`gbc`='PGr',
`gbc_name`='Description'
答案 0 :(得分:0)
我自己解决了问题,谢谢您的支持。我将CSV文件中的原始数据与数据库表的结构进行了比较。
问题是例如我要添加的数据格式错误。
我的关键列是Supplier_code(VARCHAR(6)),但是我尝试添加的数据为“ 0000400000”
所以我简单地修剪掉了多余的零,就可以了。