Skip to content
Oleg Grigoriev edited this page Mar 27, 2016 · 1 revision

Формат SET

Этот формат используется:

  1. В плейсхолдерах ?s и ?set
  2. В некоторых методах класса Table.

Ассоциативный массив. Ключ - имя столбца, значение - присваиваемое значение.

Ниже описаны форматы значений.

Скаляр

Строки, числа и NULL обрабатываются, как обычно.

$set = [
    'one' => 'string',
    'two' => 2,
    'three' => null,
];
$pattern = 'UPDATE `table` SET ?set WHERE `id`=?i';
$data = [$set, 5];
UPDATE `table` SET `one`="string", `two`=2, `three`=NULL WHERE `id`=5

Или, аналогично, через Table:

$table = $db->getTable('table');

$set = [
    'one' => 'string',
    'two' => 2,
    'three' => null,
];

$table->update($set, ['id' => 5]);

Массив

Если, в качестве значения - массив, он обрабатывается в соответствии с форматом COL.

$set = [
    'a' => [
        'func' => 'UNIX_TIMESTAMP',
        'col' => 'tm',
        'value' => 2,
    ],
];

$table->update($set, ['id' => 5]);
UPDATE `table` SET `a`=UNIX_TIMESTAMP(`tm`)+2 WHERE `id`=5

Пустой массив приводится к NULL.

Clone this wiki locally