Codeigniterの列テーブル値を配列で更新[重複]

Aug 16 2020

以下のようなテーブル更新機能があります

$update_data = array( 'total_pending'=>$amount,
                    'total_received'=>0,
                    'total_send'=>0,
                    'my_wallet'=>0,
                    'spen_in_app'=>0,
                    'check_in'=>0,
                    'upload_video'=>0,
                    'from_fans'=>0,
                    'purchased'=>0
                );

正常に動作していますが、total_pending列をtotal_pending + $ amountで更新したいのですが、次のようなエラーが発生します。

A non-numeric value encountered

誰かが問題を解決するために私を助けてくれますか?ありがとう

回答

1 DilipPatel Aug 17 2020 at 05:55

total_pendingは列名であるため、このように使用できます

$update_data = array( 'total_pending'=> `total_pending` + $amount,
                    'total_received'=>0,
                    'total_send'=>0,
                    'my_wallet'=>0,
                    'spen_in_app'=>0,
                    'check_in'=>0,
                    'upload_video'=>0,
                    'from_fans'=>0,
                    'purchased'=>0
                );
Armnature Aug 17 2020 at 07:47

$ query-> setを使用してBULK更新メソッドを変更し、このコードをそこに含めるだけです。

$this->db->set('total_pending', "total_pending+$amount");
AnkitJindal Aug 17 2020 at 05:08

以下のいずれかの方法を使用してみてください。

列を個別に設定する場合は、次の条件でいくつかのif条件を設定できます。

$this->db->set('total_received', 0); $this->db->set('my_wallet', 0);
$this->db->set('total_send', 0); $this->db->set('from_fans', 0);
$this->db->set('my_wallet', 0); $this->db->set('check_in', 0);
$this->db->set('purchased', 0); $this->db->set('upload_video', 0);
$this->db->set('spen_in_app', 0); $this->db->where(condition); //like ('id', $id) $this->db->set('total_pending', "total_pending+$amount"); $this->db->update('tablename');

または、以下の方法ですべての列を1つの配列で送信することもできます。

$update_data = array( 'total_pending'=> `total_pending` + $amount,
                    'total_received'=>0,
                    'total_send'=>0,
                    'my_wallet'=>0,
                    'spen_in_app'=>0,
                    'check_in'=>0,
                    'upload_video'=>0,
                    'from_fans'=>0,
                    'purchased'=>0
                );