Я знаю, что эта проблема уже была, но я не могу понять, как ее решить в моем случае. Я пытаюсь использовать оператор 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: я знаю, что это должно быть что-то вроде «имя_столбца = значение1, имя_столбца2 = значение2...», но можно ли использовать приведенные выше массивы таким образом, как «( имя_столбца1, имя_столбца2...) = (значение1, значение2...) что могло бы быть полезно, если бы я добавил несколько атрибутов?
Поскольку это находится вне цикла, я не уверен, как ссылаться на мое значение внутри массива sql[], поскольку у меня может быть много разных значений для одного и того же имени столбца.
Кроме того, я хотел бы добавить предложение WHERE в конце с чем-то вроде «WHERE timestamp_column_name ‹ timestamp_value», но я не знаю, возможно ли это.
Если бы кто-нибудь мог помочь мне решить эту проблему, это было бы здорово.