2012-06-12 3 views
1

ОК, поэтому я прочитал около drupal_write_record, который, по-видимому, служит функцией, которая делает insert_or_update.Использование drupal_write_record для do insert_or_update

Однако из того, что я прочитал, он сам не знает, нужно ли делать вставку или обновление, но это определяется наличием (или отсутствием) третьего параметра: $primary_keys, который по умолчанию равен array(). Это правда? Должен ли я сначала выбрать запись, посмотреть, существует ли она, а затем передать или нет третий параметр в drupal_write_record?

Я спрашиваю об этом, потому что, как я обычно делаю функцию вставки или обновления, нужно сделать выбор на основе первичного ключа (ов), а если строка существует, то мне нужно сделать обновление, если не , вставка. Не так ли работает drupal_write_record?

Использование Drupal 7.0.

+0

С какой версией Drupal вы работаете? – kevin628

+0

Drupal 7.0, извините, я забыл упомянуть об этом. Я добавлю его в вопрос. –

ответ

0

Согласно документации:

$ primary_keys: Для того, чтобы указать, что это новый рекорд будет установлен, пропустите этот аргумент. Если это обновление, этот аргумент указывает имена полей первичных ключей. Если в ключе есть только 1 поле, вы можете передать строку; если в ключе есть несколько полей, перейдите в массив.

Источник: drupal_write_record API documentation

Если третий parameter-- $primary_keys - это массив с именами полей для первичных ключей, то он будет пытаться обновить запись существует. Если вы оставите значение $primary_keys, оно будет по умолчанию пустым массивом, что означает, что он будет вставлять новую запись с ее собственным уникальным идентификатором.

+0

Я не был уверен даже после чтения документов, но я просмотрел код функции, и вы правы, я должен проверить себя, должен ли я делать вставку или обновление. Облом. –