【发布时间】:2016-02-20 22:22:50
【问题描述】:
我知道这个问题已经存在,但我不知道如何在我的情况下解决它。我尝试将 UPDATE 语句与 sql 一起使用,但在处理多行时出现问题。
这是我的代码:
$body = file_get_contents('php://input');
$jsonArray = json_decode($body, true);
$sql = array();
foreach ($jsonArray as $row) {
$sql[] = '("'.$row['firstname'].'", "'.$row['lastname'].'", "'.$row['sex'].'", "'.$row['dateOfBirth'].'", "'.$row['email'].'")';
}
$column_name = "(firstname, lastname, sex, dateOfBirth, email)";
$stringImplode = implode(',', $sql);
$action = $mysqli->query('INSERT INTO tbl_syncList '. $column_name .' VALUES '.$stringImplode .'ON DUPLICATE KEY UPDATE XXXXXXX'); // --> I get stuck here
我不知道在 ON DUPLICATE KEY UPDATE 之后应该如何写:我知道它应该类似于“column_name = value1,column_name2 = value2 ...”,但是否可以以某种方式使用上面的数组比如 "(column_name1, column_name2...) = (value1, value2...) 如果我要添加多个属性可能会有用?
由于它位于循环之外,我不确定如何在 sql[] 数组中引用我的值,因为对于同一个 column_name 可能有很多不同的值。
此外,我想在末尾添加一个 WHERE 子句,例如“WHERE timestamp_column_name
如果有人可以帮助我解决这个问题,那就太好了。
【问题讨论】:
标签: php mysql arrays row on-duplicate-key