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