drupal_write_record и null, возможно?

Главные вкладки

Аватар пользователя xxandeadxx xxandeadxx 8 июля 2010 в 23:36

не работает:

<?php
// shema
'status' => array(
  
'type' => 'int',
  
'size' => 'tiny',
),
?>
<?php
$record 
= array('id' => 66'status' => null);
drupal_write_record('table'$record'id');
?>

так и задумано?

Комментарии

Аватар пользователя natbampo natbampo 9 июля 2010 в 9:39

Получается что задавая
'status' => null
ты это поле все равно что не указываешь. Для insert-а пойдет, а вот update - нет.
Почему: думаешь в таблицу NULL записать, но ведь и в php имеется свой null.
Зацени вот так:
<?php
$record = array('id' => 66, 'status' => 'NULL');
?>
- запишет ноль, так как заполнитель будет %d.

Аватар пользователя natbampo natbampo 9 июля 2010 в 14:24

так а для NULL и в стандартном db_query нет заполнителя. В Вандюке про NULL, TRUE, FALSE специально о том что заменяется на 0 или 1 сказано.
Единственно что можно - сначала удалить, а потом без указания вставить если конечно в схеме - 'default' => NULL.

Аватар пользователя natbampo natbampo 9 июля 2010 в 15:16

да, точно, можно же и так.

Кстати тут, "под шумок", спрошу: почему в Database API нет функции типа db_num_rows чтобы получить кол-во строк результата. Хотя в самом ядре используются функции mysql_num_rows, pg_num_rows ...
Чем обычно заменяется такая функция друпалерами? Или в обход API использовать?

Аватар пользователя xxandeadxx xxandeadxx 9 июля 2010 в 16:01

я тоже недавно задавался этим вопросом) вот что пишут на d.org

Quote:
Because db_num_rows is not standard SQL and is not supported in the same way across different database engines.

Аватар пользователя natbampo natbampo 9 июля 2010 в 16:07

В общем если в settings.php такую функцию самому написать, то думаю большой беды не случится. Этот же файл при обновлениях не трогается? А кому надо поймет - зачем она.