3

繰り返しになりますが、私はスタックオーバーフロー コミュニティに翻弄されています!

私は自分の PHP プロジェクトに CodeIgniter を使用するようになりましたが、これまでは簡単でしたが、投稿データでデータベース フィールドを更新しようとして行き詰まりました。

私の配列は通常です: array(name => value, name => value, name => value); これも、送信された $_POST データから取り込まれます。

配列と同様に、設定の2 つのフィールドを持つデータベース テーブルがあります。設定の下の名前は配列キーに対応し、は配列キーの値に対応します。

(ちゃんと説明した?)

それにもかかわらず、私はこれを正常に機能させるために少しの間努力してきましたが、実際には暗闇の中で手を振っているだけです.

この厄介な問題を解決するために、頭脳明晰な皆さんが助けてくれることを願っています!

編集:

答えてくれたみんなありがとう!次のコードを使用して、必要な結果を生成することができました。

    foreach ($form_data as $key => $val)
    {
        $this->db->where ('setting', $key);
        $this->db->set ('value', $val);
        $this->db->update ('recruitment');
    }

今、私は追加してこれをフォローアップしようとしました:

    if ($this->db->affected_rows() >= '1') { return true; }
    return false;

私のモデルに、そして

        if ($this->RecruitmentSettings->Update($form_data) == TRUE)
        {
            redirect('recruitment/success');
        }

コントローラーに接続しましたが、期待どおりにまったく機能していません。私が間違っていることはありますか?

4

2 に答える 2

2

ここにはたくさんの質問があります。データベースにすでに値があり、それらを更新しますか?それとも、毎回新しいデータを入力しますか?答えはそれに依存します。

必要なのは、アクティブレコードクラスのinsert_batch()orupdate_batch()メソッドです(それがdbに使用している場合)。

foreach($post_array as $key => $value)
{
    $settings[] = array(
        'setting' => $key,
        'value' => $value
    );
}

$this->db->insert_batch('your_db_table', $settings);

または、更新の場合:

$this->db->update_batch('your_db_table', $settings, 'setting');

クエリを実行して設定を確認し、結果があるかどうinsert_batchupdate_batchに応じて実行することができます。毎回挿入したい場合は、挿入を行う前にテーブルの行を削除できます。しかし、私はトランザクションなしではそれをしません。

于 2012-08-27T15:25:08.413 に答える
0

では、配列データをデータベースに保存したいですか?あなたはこれを行うことができます

モデル

foreach ($data as $key => $item)
{
      $this->db->set ('setting', $key);
      $this->db->set ('value', $item);
      $this->db->insert ('table_name');
}
return ($this->db->affected_rows() > 0);

コントローラ

if ($this->RecruitmentSettings->Update($form_data))
{

 redirect('recruitment/success');
}
else
{
     echo "error";
}
于 2012-08-27T15:17:30.407 に答える