-1
我有一个主键“ID”和由price_date,fund_id,currency_id的唯一约束的数据库,类标识码插入对重复键更新 - 在mysqli的循环
$query = "INSERT INTO `price_data` (`price_date`, `fund_id`, `currency_id`, `class_id`, `nav`, `nav_change`) VALUES";
$format = " ('%s', '%s', '%s', '%s', %f, %f),";
// Go over each array item and append it to the SQL query
foreach($prices as $price) {
$query .= sprintf(
$format,
$mysqli->escape_string($price['PriceDate']),
$mysqli->escape_string($price['Fund']),
$mysqli->escape_string($price['Currency']),
$mysqli->escape_string($price['Class']),
$mysqli->escape_string($price['NAV']),
$mysqli->escape_string($price['NavChange'])
);
}
// The last VALUES tuple has a trailing comma which will cause
// problems, so let us remove it
$query = rtrim($query, ',');
// MySQLi::query returns boolean for INSERT
$result = $mysqli->query($query);
我想改变查询像
INSERT INTO `price_data`(price_date , fund_id , currency_id , nav , nav_change) VALUES() ON DUPLICATE KEY UPDATE nav='',nav_change='';
我试图把这段最初的查询是没有得到的导航和nav_chnge到查询的值。
$query .= ' ON DUPLICATE KEY UPDATE nav=$format$mysqli->real_escape_string($data[\'NAV\']),nav_change=$format,$mysqli->real_escape_string($data[\'NavChange\'])';
如果我回应结果查询,它看起来像下面
INSERT INTO `price_data` (`price_date`, `fund_id` , `currency_id`, `class_id`, `nav`, `nav_change`) VALUES ('2013-04-29', 'AAAA', '0', 'A', 11.793300, 0.054000), ON DUPLICATE KEY UPDATE nav=$format$mysqli->real_escape_string($data["NAV"]),nav_change=$format,$mysqli->real_escape_string($data["NavChange"])
感谢您的帮助。