データベースに入れようとすると”Incorrect string value”と、クエリが通らない
フォームからデータベースにINSERTかけるだけの簡単なクエリが通らずに、
Incorrect string value:
みたいにエラーが出る。
function content_form_submit($form, &$form_state) {
$form_values = $form_state['values'];
$form_keys = array_keys($form_values);
db_query("INSERT INTO {content} (cid, name ) VALUES (%d, '%s')", $cid, $form_values["code"]);
drupal_goto('content/teacher-registration-completed');
}
他の部分で似たようなコードは問題ないのにだ。
データベースのテーブルのエンコーディングが異なっている可能性を疑おう。
show create database データベース名;
で、utf8ではなく、latin1になっていないだろうか?
SET @saved_cs_client = @@character_set_client; SET character_set_client = utf8; CREATE TABLE `content` ( `cid` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL default '', PRIMARY KEY (`cid`) ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; SET character_set_client = @saved_cs_client;
のように、DEFAULT CHARSET=utf8 にセットすると他のテーブルと文字コードが一致してエラーは消える。