在foreach循环内提交按钮更新所有表行而不是一行

时间:2016-07-28 03:30:14

标签: php wordpress forms

我创建了这个简单的函数来更新名为wp_todos

的表中的行
function update_completed_todos($id,$complete) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'todos';
    $result = $wpdb->get_results("SELECT id FROM " . $table_name .  " WHERE id = '" .$id."'");
    if (count ($result) > 0) {
        $wpdb->update( 
            $table_name, 
            array(  
                'complete'   =>  $complete, 
            ),
            array( 'id' => $id )
        );
    }
}

它只传递了两个变量:$id$complete

然后我创建了一个foreach循环:

$todos = $wpdb->get_results("SELECT * FROM " . $table_name);
foreach ($todos  as $key => $value) {
     <input id="<?php echo $value->id; ?>" type="submit" onclick="<?php update_completed_todos($value->id, 1); ?>" value="<?php esc_attr_e( 'Done' ); ?>" />
}

如您所见,它应将"1"提交到特定行中的特定列complete。 这里的问题是,当我单击按钮时,它会影响表中的所有行而不是目标的一行。换句话说,它使整个列complete取值为&#34; 1&#34;。

0 个答案:

没有答案