在drupal 7中构建表单 - 复选框值插入数据库

时间:2014-01-04 01:44:16

标签: forms checkbox drupal-7

我试图将复选框值添加到SQL数据库中但得到此错误消息:

PDOException:SQLSTATE [21S01]:插入值列表与列列表不匹配:1136列数与第1行的值计数不匹配:INSERT INTO {1test}(personnummer,arende,kampanj)VALUES(:db_insert_placeholder_0,: db_insert_placeholder_1,:db_insert_placeholder_2_ett,:db_insert_placeholder_2_tva,:db_insert_placeholder_2_tre);在my_module_my_form_submit()中的数组([:db_insert_placeholder_0] => 8007289690 [:db_insert_placeholder_1] => saldo [:db_insert_placeholder_2_ett] => ett [:db_insert_placeholder_2_tva] => 0 [:db_insert_placeholder_2_tre] => 0) C:\ acquia-drupal-sites \ sql \ sites \ all \ modules \ 1-custom \ my_module \ my_module.module)。

我的Form_Module:

$form['kampanj'] = array(
 '#default_value' => array(
  ),
 '#required' => '0',
 '#key_type_toggled' => '0',
 '#weight' => '2',
   '#type' => 'checkboxes',
'#options' => array(
'ett' => t('ett'),
'tva' => t('två'),
'tre' => t('tre'),
 ),
 '#title' => t('Kampanj'),
 );

function my_module_my_form_submit($form, &$form_state) {
$personnummer = db_insert('1test')
->fields(array(

'kampanj' => $form_state['values']['kampanj']


))
->execute();
drupal_set_message(t('Registrerat.'));

}

1 个答案:

答案 0 :(得分:0)

如果您的表有4列,那么您需要在字段函数数组中发送4个值。你只是发送它1.因此错误:

  

列数与第1行的值计数不匹配

我认为在发送到fields函数的数组中,你需要有4个值,数组键对应于table列。发送Null为id

例如

->fields(array(
'id' => null,
'id-number' => 'something',
'items' => 'something,
'kampanj' => $form_state['values']['kampanj'],
))

此外,'kampanj'的值实际上是数据库预期的文本吗?