Wordpress将多行插入数据表

时间:2011-08-22 15:58:40

标签: php wordpress insert wpdb

我想将一些数据插入到数据表中,用于wordpress插件。 数据是通过POST获取的。 我有多个结果(使用post),但$ wpdb-> insert只插入最后一个结果(实际上覆盖了数据)。那是为什么?

这是我的代码:

html:

echo '<label for="reduceri-post-category"><b>' . __("What categories should be the adverts", 'appplugin' ) . '</b></label><br /><br /><br />';
    ?>

    <?php foreach ($the_data[categories]  as $sat): ?>
    <b> <?= $sat[name]; ?> <br /> </b>
            <?php foreach ($sat[subcategories] as  $cat):
    ?>

    &nbsp; &nbsp; &nbsp;<input type="checkbox" name="reduceri-post-category" value="<?= $cat[sid] ?>" /> <?php echo $cat[name]; echo $cat[sid]; ?><br />

    <? endforeach; ?>
    <? endforeach; ?>




global $wpdb;


    $thedata['reduceri-post-category'] = $_POST['reduceri-post-category'];


    $table_name = $wpdb->prefix . "reduceri";


    foreach ($thedata as $key => $value) { 
    if( $post->post_type == 'revision' ) return;
    if ( $post->post_type == 'post'){

        $wpdb->insert($table_name, array( 'time' => current_time('mysql'), 'post' => $post->ID, 'category' => $value));
    }
    }

我能做什么才能插入所有结果,而不仅仅是最后一个?非常感谢!

1 个答案:

答案 0 :(得分:0)

reduceri-post-category中的内容是什么?

你说你在帖子中有多个值。这些多个值如何传递到您的插件中? reduceri-post-category是否包含多个值?您是否为每个值使用单独的键?例如,reduceri-post-category2/3/4

您正在使用foreach迭代$thedata.但是我没有在代码中看到您在$thedata中实际创建数组的任何位置。所以你的foreach只执行一次,它将根据$_POST['reduceri-post-category'];内的内容执行

我认为你想做的事情,很难说,是这两种情况中的一种。

场景1 - 多个帖子密钥保存您之后的数据

$thedata[foo1] = $_POST[foo1];
$thedata[foo2] = $_POST[foo2];
$thedata[foo3] = $_POST[foo3];
foreach ($thedata as $key => $value) { }

或(pseudeocode) - 单个帖子密钥包含您的所有类别数据。所以你必须把它拆开然后在每一个上执行。

$thedata = explode("?", $_POST[reduceri-post-category]);
foreach ($thedata as $key => $value) { }