2017-01-03 13 views
0

私の目標は、Dealersテーブルの既存の列(promo_ids)を新しいプロモーションが挿入されると作成された新しいPK IDで更新することです。私はすでに設定されている既存のIDを保持したい。これは可能ですか?もしそうなら、正しい方向のどんな点も素晴らしいでしょう。私はまだSQLステートメントにはまったく新しいです。新しいプロモーションを追加するためのコードは次のとおりです。SQLの挿入後の更新

public function add_new_promo() { 
     global $wpdb; 

     $result = $wpdb->query(
        $wpdb->prepare(
        " 
        INSERT INTO $wpdb->gdp_promos 
        (promo, short_desc, long_desc, rebate_url, legal_copy, image_id, promo_headline, promo_line1, promo_desc, linkback_url, share_image_id, dealer_ids) 
        VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) 
        ", 
        $this->promo_data['promo'], 
        $this->promo_data['short_desc'], 
        $this->promo_data['long_desc'], 
        $this->promo_data['rebate_url'], 
        $this->promo_data['legal_copy'], 
        $this->promo_data['image_id'], 
        $this->promo_data['promo_line1'], 
        $this->promo_data['promo_headline'], 
        $this->promo_data['promo_desc'], 
        $this->promo_data['linkback_url'], 
        $this->promo_data['share_image_id'], 
        $this->promo_data['dealer_ids'] 
       ) 
       ); 
     if ($result === false) { 
      $state = 'error'; 
      $msg = __('There was a problem saving the new promo details, please try again.', 'gdp'); 
     } else { 
      $_POST = array(); 
      $state = 'updated'; 
      $msg = __("promo {$this->promo_data['promo']} successfully added.", 'gdp'); 
     } 
     add_settings_error ('add-promo', esc_attr('add-promo'), $msg, $state); 
    } 

答えて

0

はいそれは、ストアドプロシージャ内部トランザクションブロック内の両方insertupdateステートメントを包むことによってAFTER INSERT TRIGGERPromotionの表(OR)のいずれかを使用することによるものです。 ID列がAUTO_INCREMENT列の場合は、LAST_INSERT_ID()を使用して、新しく挿入されたPK ID列値を取得できます。

詳細については、MySQLのドキュメントを参照してください。あなたのelseブロックで

0

、追加:すべての既存のプロモIDを消去しながら、それが新しいプロモIDとディーラーのテーブル内のすべてのディーラーを更新するよう

$new_pk_id = $wpdb->insert_id; 
$update_stmt = "UPDATE Dealers SET promos_id = %d WHERE dealer_id = %d"; 
$wpdb->query($wpdb->prepare($update_stmt, array($new_pk_id, $specific_dealer_id)); 
+0

これが見えます。 –

+0

あなたはそうです。ごめんなさい。私はそれを編集しました。 –

関連する問題