【问题标题】:A row was inserted unexpectedly on my MYSQL Table在我的 MYSQL 表上意外插入了一行
【发布时间】:2012-03-31 12:39:29
【问题描述】:

我在表中插入值时遇到问题。

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

有一个空白的 products_id 值,其中每个产品 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);
     }
 }

我的代码有问题吗?我找不到它。该行不是必需的,也没有用。

请帮忙。

【问题讨论】:

  • 您能否使用空格/制表符重新格式化您的代码以使其更易于阅读?目前,这就像阅读没有段落的正文。
  • 大声笑,缩进的空格;-)

标签: php sql database wordpress


【解决方案1】:

那是一团糟,但这应该可以避免将来出现问题..

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);
   }
  }
 }

【讨论】:

  • 我已经修改了你的一些代码来完成它的工作。谢谢 Xfile。
【解决方案2】:

我在 perl 的数组初始化中看到了这一点。初始化数组时,有时会使用 null zeroeth 元素创建它,具体取决于数组的声明方式。

尝试使用 perl 调试器 (perl -D) 运行并检查插入数组,或者包含 Data::Dumper 并打印整个数组。

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 2022-01-10
    • 2014-07-18
    • 2014-08-02
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多