0

嗨,我在将日期从 drupal 插入到 mysql 时遇到了一点麻烦,这是我正在尝试的代码

.....
$form['kotak']['tgl'] = array(
'#type' => 'date',
'#title' => t('Tanggal'),
);
.....
function awal_form_submit($form,&$form_state){
global $user;
$entry = array(
 'tanggal'  => $form_state['values']['tgl'],
);
$tabel = 'jp_1';
$return = insert_form($entry,$tabel);
}
.....
function insert_form($entry,$tabel){
$return_value = NULL;
try {
 $return_value = db_insert($tabel)
                ->fields($entry)
                ->execute();    
}
.....

每次我提交时,都会出现这样的错误代码

db_insert 失败。消息 = SQLSTATE [21S01]:插入值列表与列列表不匹配:1136 列计数与第 1 行的值计数不匹配,查询 = INSERT INTO {jp_1}(tanggal)值(:db_insert_placeholder_0_month,:db_insert_placeholder_0_day,:db_insert_placeholder_0_year)

有什么建议或更正吗?

4

2 回答 2

0

我终于找到了答案,我只需要下载“日期”模块并激活它的“日期 API”。这里的代码

.....
$datex = '2005-1-1';
$format = 'Y-m-d';
$form['kotak']['tgl'] = array(
'#type' => 'date_select',
'#default_value' => $datex,
'#date_format' => $format,
'#date_year_range' => '-10:+30', 
'#title' => t('Tanggal'),
);
.....
function awal_form_submit($form,&$form_state){
global $user;
$entry = array(
 'tanggal'  => $form_state['values']['tgl'],
);
$tabel = 'jp_1';
$return = insert_form($entry,$tabel);
}
.....
function insert_form($entry,$tabel){
$return_value = NULL;
try {
 $return_value = db_insert($tabel)
                ->fields($entry)
                ->execute();    
}
.....

现在我交付给mysql没有问题。希望这会帮助像我这样的其他 drupal 新手开发人员。感谢:D

于 2012-05-01T13:06:54.990 回答
0

从 mysql 错误看来,您创建的表具有必填字段(a columns Null 属性设置为 0,这意味着您要插入的每一行的 tha 列必须有一个值)

检查是否有任何将 null 设置为 0 的列。

从您的示例中,我看不到您要实现的目标,但是在许多情况下,没有必要手动写入 db 表(使用 db_insert()),因为您可以通过创建内容类型(节点type) 为您处理很多功能。我希望这会有所帮助,马丁

于 2012-04-25T15:46:02.640 回答