0

$row->unitsuse function serialize()=>[$row->units]を使用してデータベースの値 (配列) に挿入しunserialize()ます。(jQuery での ajax 呼び出しの送信を返す)json_encode$row->name

データベースの列:

$row->単位 => a:6:{i:0;s:15:"Coffee";i:1;s:14:"Satellite";i:2;s:11:"Game Notes";i:3;s:14:"Internet";i:4;s:10:"Pool";i:5;s:0:"";}

$行->名前=>George Kurdahi

$query = $this->db->query("SELECT * FROM arraha WHERE name LIKE '%$search%' ORDER BY name asc");

$data = array();
foreach ($query->result() as $row)
{
   $data[] = array('name' => $row->name, 'units' => unserialize($row->units)); // Line 22
}
return json_encode($data)

上記のコードのエラーは次のとおりです。

PHP エラーが発生しました

重大度: 通知

メッセージ: unserialize() [function.unserialize]: 281 バイトのオフセット 277 でエラーが発生しました

ファイル名: model.php

ライン番号: 22

4

1 に答える 1

1

文字エンコードに関していくつかの問題があります。

s:15:"Coffee"

15はバイト単位の長さを意味します。したがって、DBからフェッチされたデータのエンコーディングをserialize()で使用されたエンコーディングに変換する必要があります

シリアル化の代わりにjson_encodeを使用できます。

$arr = array('Coffee', 'Satellite', /*...*/);
$row->units = json_encode($arr);
于 2011-09-01T12:36:43.797 に答える