1

この挿入クエリを試す場合:

//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();

すべて正常に動作し、すべてのデータが正常に読み込まれますが、会社名にアクセントが付けられると、「Webサイトで予期しないエラーが発生しました」というエラーが発生します。ログには、その特定の行に「エラー」と表示されます。アクセントのある行を削除すると問題は解決しますが、そのアクセントを追加できるようにする必要があります。Drupalの方法の外でデータベース接続を行う場合(mysql_query( "INSERT INTO ...")のみ)、正常に機能します。

会社名は次のようになります:JohnsIndustriëleCompany

データベースはutf8、テーブルとフィールドはutf8です。

誰かがこの謎に光を当てることができることを願っています!

4

2 に答える 2

2

これは、入力のエンコーディングの問題である可能性があります。$cn ="Johns Industriële Company";たとえばISO-8859-1に格納されている場合、シーケンスële(この場合はバイトシーケンスである必要があります)は、データベースが拒否する必要のeb 6c 66ある無効なUTF-8シーケンスを表します。

送信されたデータのエンコーディングとバイトを調べてみてください。

于 2012-05-30T07:55:21.400 に答える
2

テーブルとフィールドの形式はUTF-8形式である必要があります。

db_insert('table_name')
          ->fields(array(
             'column_name' => utf8_encode('insert_value'),
           ))->execute();
    }

「Clément」のようなinsert_value。utf8_encode()関数は、上昇文字を挿入するのに役立ちます。

于 2014-06-19T05:02:39.410 に答える