我想将一些数据插入到数据表中,用于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):
?>
<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));
}
}
我能做什么才能插入所有结果,而不仅仅是最后一个?非常感谢!
答案 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) { }