尝试此插入查询时:
//insert into database
$contact_id = db_insert('contact')
->fields(array(
'date_created' => date("Y-m-d H:i:s"),
'date_updated' => date("Y-m-d H:i:s"),
'list_id' => $form_state['values']['list_id'],
'first_name' => $fn,
'last_name' => $ln,
'gender' => $g,
'email' => $ea,
'company_name' => $cn,
'is_active' => 1,
))
->execute();
一切正常,所有数据都正常加载,但当公司名称获得重音时,则会导致错误“网站遇到意外错误”。并且日志只是在该特定行上说“错误”。删除带有重音的行解决了问题,但我需要能够添加该重音。如果我在Drupal方式之外建立数据库连接(只是mysql_query(“INSERT INTO ...”))它可以正常工作。
公司名称如下:JohnsIndustriëleCompany
数据库是utf8,表和字段utf8
希望有人能对这个谜团有所了解!
答案 0 :(得分:2)
这可能是输入中的编码问题。如果$cn ="Johns Industriële Company";
存储在例如ISO-8859-1中,则序列ële
(在这种情况下应该是字节序列eb 6c 66
)将表示无效的UTF-8序列数据库应该拒绝。
尝试检查提交数据的编码和字节。
答案 1 :(得分:2)
表格和字段格式应采用UTF-8格式。
db_insert('table_name')
->fields(array(
'column_name' => utf8_encode('insert_value'),
))->execute();
}
insert_value就像“Clément”。 utf8_encode()函数将帮助您插入上升字符。