0

受信したエラー:

エラー番号: 1366

不正な文字列値: 行 1 の列 'last_name' の '\xCC_a'

UPDATE phppos_peopleSET first_name= 'Juan Gordon', last_name= 'Garc�_a', email= 'EMAIL@email.com', phone_number= '', address_1= '', address_2= '', city= '', state= '', zip= '', country= ' ', comments= ''WHERE person_id= '238'

ファイル名: /Library/WebServer/Documents/PHP-Point-Of-Sale/models/person.php

ライン番号: 85

コード:

//Skip first row
fgetcsv($handle);
while (($data = fgetcsv($handle)) !== FALSE) 
{
    $person_data = array(
    'first_name'=>$data[0],
    'last_name'=>$data[1],
    'email'=>$data[2],
    'phone_number'=>$data[3],
    'address_1'=>$data[4],
    'address_2'=>$data[5],
    'city'=>$data[6],
    'state'=>$data[7],
    'zip'=>$data[8],
    'country'=>$data[9],
    'comments'=>$data[10]
    );

    $customer_data=array(
    'account_number'=>$data[11]=='' ? null:$data[11],
    'taxable'=>$data[12]=='' ? 0:1,
    'company_name' => $data[13],
    );
    if($this->Customer->exists($data[14]))
    {
        $this->Customer->save($person_data,$customer_data,$data[14]);
    }
    else if(!$this->Customer->save($person_data,$customer_data))
    {   
        echo json_encode( array('success'=>false,'message'=>lang('customers_duplicate_account_id')));
        return;
    }
}

データベース列は utf8_unicode_ci エンコーディングを使用します

utf8_encode を使用してみましたが、うまくいきませんでした

4

1 に答える 1

1

エンコードに問題があります。それを解決するには、保存する前に値に対して関数 utf8_encode を呼び出す必要があります。

$person_data = array(
'first_name' => $data[0],
'last_name'  => utf8_encode($data[1]),
...

私は CodeIgniter も使用しており、データベース構成は次のとおりです。

$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
于 2013-03-19T13:20:41.510 に答える