我有一个带有主键“id”和由 price_date、fund_id、currency_id 和 class_id 组成的唯一约束的数据库
$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 和 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"])
谢谢你的帮助。