Существует ли способ сделать, “ВСТАВЛЯЮТ … НА ДУБЛИРУЮЩЕМСЯ КЛЮЧЕВОМ ОБНОВЛЕНИИ” в Платформе Зенда 1.5?

46
задан Cœur 29 March 2018 в 14:59
поделиться

4 ответа

Я работал на Пехлеви и конкретно работал над Zend_Db вполне немного.

нет, нет никакой поддержки API ON DUPLICATE KEY UPDATE синтаксис. Для этого случая необходимо просто использовать query() и сформировать полный SQL-оператор сами.

я не рекомендую интерполировать значения в SQL как harvejs шоу. Используйте параметры запроса.

Редактирование: можно постараться не повторять параметры при помощи VALUES() выражения.

$sql = "INSERT INTO sometable (id, col2, col3) VALUES (:id, :col2, :col3)
  ON DUPLICATE KEY UPDATE col2 = VALUES(col2), col3 = VALUES(col3)";

$values = array("id"=>1, "col2"=>327, "col3"=>"active");
54
ответ дан Bill Karwin 26 November 2019 в 20:36
поделиться

@ Билл Карвин: отличные решения! Но было бы лучше, если бы вместо знаков вопросов использовать именованные заполнители (": id", ": col1",…). Тогда вам не нужно дублировать значения с помощью array_marge. Также, если использовать синтаксис «SET» для «INSERT» вместо «VALUES», код становится проще для автоматической генерации для любого набора полей.

$sql = 'INSERT INTO sometable SET id = :id, col2 = :col2, col3 = :col3
    ON DUPLICATE KEY UPDATE id = :id, col2 = :col2, col3 = :col3';
5
ответ дан 26 November 2019 в 20:36
поделиться

В качестве боковой панели вы можете упростить предложение ON DUPLICATE KEY UPDATE и уменьшить объем обработки, который должен выполнять ваш скрипт, используя VALUES () :

$sql = 'INSERT INTO ... ON DUPLICATE KEY UPDATE id = VALUES(id), col2 = VALUES(col2), col3 = VALUES(col3)';

См. http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html для получения дополнительной информации.

6
ответ дан 26 November 2019 в 20:36
поделиться

вы можете просто сделать что-то вроде этого:

установите уникальный индекс для вашего идентификатора

, а затем

try {
   do insert here
} catch (Exception $e) {
   do update here
}
-7
ответ дан 26 November 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: