2012-03-31 13 views
0

テーブルに値を挿入する際に問題があります。MYSQLテーブルに予期せず行が挿入されました

-------------------------------------------- 
| products_id | related_products_ids | 
| ----------------------------------------- 
|    | 1,2,3,4,6,   | 
| ----------------------------------------- 
| 2   | 1,2,3,6,    | 
| ----------------------------------------- 
| 3   | 1,2,4,    | 
------------------------------------------- 

各商品IDに全て挿入された値は、そのrelated_products_ids値にあるブランク​​値があります。私はこのコードを使用

for ($i=0; $i<count($_POST['rp_product']);$i++) { 
    $check_val .= $_POST['rp_product'][$i]; 
    $check_val .=","; 
} 

$insert_rp_ids1 = explode(',', $check_val); 

foreach($insert_rp_ids1 as $rp_ids) { 

    $related_query = "SELECT related_products_ids, products_id 
         FROM ".TABLE_RELATED_PRODUCTS." 
         WHERE products_id = '" . $rp_ids ."'"; 

    $result_rp = mysql_query($related_query); 
    $related_products_value = mysql_fetch_assoc($result_rp); 

    if(mysql_num_rows(mysql_query("SELECT products_id FROM ".TABLE_RELATED_PRODUCTS." WHERE products_id = '$rp_ids'"))){ 

     $rp_values = $related_products_value['related_products_ids'].$products_id.','; 
     $rps_each1 = array('related_products_ids' => $rp_values); 

     $wpdb->update(TABLE_RELATED_PRODUCTS, $rps_each1, array('products_id' => $rp_ids)); 

    } else { 

     $rps_each2 = array('products_id' => $rp_ids, 
        'related_products_ids' => $products_id.','); 

     $wpdb->insert(TABLE_RELATED_PRODUCTS, $rps_each2); 
    } 
} 

は私のコードに何か問題はありますか?私はそれを見つけることができません。その列は必要ではなく、無駄です。

助けてください。

+1

は、あなたはそれが読みやすくするために、スペース/タブを使用してコードを再フォーマットしてもらえますか?現時点では、段落なしで本文を読むようなものです。 – MichaelRushton

+0

はスペースを追加しました。 – Ken

+0

Lol、インデントのためのスペース;-) – zerkms

答えて

2

混乱だったが、これは将来的に問題を避ける必要があります。..

for ($i=0; $i<count($_POST['rp_product']); $i++) 
{ 
    $check_val1 .= $_POST['rp_product'][$i] .","; //gather data 
} 
$check_val = trim($check_val1, ','); //clean last , 
unset($check_val1); //flush 

$insert_rp_ids1 = explode(',', $check_val); 

foreach($insert_rp_ids1 as $rp_ids) 
{ 

if($result_rp = mysql_query("SELECT related_products_ids, products_id FROM ".TABLE_RELATED_PRODUCTS." where products_id = '" . $rp_ids ."'")) 
{ 
    if($products_id > 0) 
    { 
    $related_products_value = mysql_fetch_assoc($result_rp); 
    $rp_values = $related_products_value['related_products_ids'] . "," . $products_id; 

    $rps_each1 = array('related_products_ids' => $rp_values); 
    $wpdb->update(TABLE_RELATED_PRODUCTS, $rps_each1, array('products_id' => $rp_ids)); 
    } 
    } 
    else 
    { 
    if($rp_ids > 0 && $products_id > 0) 
    { 
    $rps_each2 = array('products_id' => $rp_ids, 'related_products_ids' => $products_id); 
    $wpdb->insert(TABLE_RELATED_PRODUCTS, $rps_each2); 
    } 
    } 
} 
+0

私は仕事をするためにあなたのコードを少し変更しました。ありがとうXfile。 – Ken

0

これは、配列の初期化時にperlで表示されます。配列を初期化するとき、配列が宣言される方法に応じて、nullゼロ要素で作成されることがあります。

perlデバッガ(perl -D)を実行して、挿入配列をチェックするか、Data :: Dumperをインクルードして配列全体を出力してみてください。

関連する問題