2

入力フィールドの配列からデータを取得してデータベースに書き込もうとしています。私はこれまで配列を扱ったことがありませんが、これは私が持っているコードです。これは、単一の入力値である場合に私が行うことを基にしています。私はこれが間違っていることを知っていますが、次に何を試すべきかわかりません。何か案は?ありがとう。

//view
<input type="text" name="assignments[]">
<input type="text" name="hours[]">

<input type="text" name="assignments[]">
<input type="text" name="hours[]">

<input type="text" name="assignments[]">
<input type="text" name="hours[]">

<input type="text" name="assignments[]">
<input type="text" name="hours[]">

<input type="text" name="assignments[]">
<input type="text" name="hours[]">

//controller
$assignments = $this->input->post('assignments', TRUE);
$hours = $this->input->post('hours', TRUE);

$this->load->model('create', 'create_model');
$this->create_model->create_projects($assignments, $hours);

//model
public function create_projects($assignments, $hours) {

    $data = array(
        'assignments' => $assignments,
        'hours' => $hours,
        );
    $this->db->insert('projects', $data);
}
4

4 に答える 4

3

もちろん、PHP 配列をそのままデータベースに入れることはできません。

$data = array(
    'assignments' => $assignments, // this is an array
    'hours'       => $hours,       // so is this
);
$this->db->insert('projects', $data);

配列の文字列表現が必要です。次の 2 つのオプションが思い浮かびます。

個人的には json_encode を好みます。これは、読み取りが PHP に依存していないためです。serialize は PHP オブジェクトの格納に役立ちますが、ここでは必要ありません。

$data = array(
    'assignments' => json_encode($assignments),
    'hours'       => json_encode($hours),
);
$this->db->insert('projects', $data);

TEXT可変長データを格納できるように、DB フィールドが型であることを確認してください。後でデータをフェッチするときは、json_decode()各フィールドで実行して読み取り、配列に戻す必要があります。次に例を示します。

$result = $this->db->get('projects')->result();
foreach ($result as $record)
{
    $assignments = json_decode($record->assignments);
    // Now $assignments is an array
}
于 2012-10-17T22:23:34.513 に答える
2

答えてくれてありがとう。私にとって最もうまくいったのはこれでした。

//controller
$assignments = $this->input->post('assignments');
$hours = $this->input->post('hours');

$this->load->model('create', 'create_model');

foreach($assignments as $key => $n){
    $this->create_model->create_projects($n, $hours[$key]);
}
于 2012-10-23T15:17:08.353 に答える
0

json_encode() 関数を使用して、配列データをデータベースに格納するだけです

json_encode(array('key' => 'value'))

また

json_encode($_P0ST['ARRAY'])

または CodeIgniter で

json_encode($this->input->post('arraydata'));
于 2016-02-03T07:56:20.153 に答える
-1

投稿:- $skills = $this->input->post('skills[]',TRUE);

'skills' => json_encode($skills) ,

それは私の問題を解決しました。

于 2018-01-12T12:33:03.443 に答える