使用插件从管理面板中删除数据库记录

时间:2018-06-08 作者:Timothy Mach

我有一个从WordPress数据库读取数据的插件。我希望管理员能够使用数据的ID从数据库中删除记录。。。我试过了

 if ($_GET) {
    if ( isset( $_GET[\'in_delete\'] ) ) {
        global $wpdb;
        $result = $wpdb->get_results( "SELECT * FROM bookings" );

        foreach ( $result as $print ) {
            $id = $print->id;
            $del =  $wpdb->delete( \'bookings\', $id );
            if ( $del ) {
                echo "<script>
                        alert(\'record deleted\');
                      </script>";
            }
        }
    }
}
我的按钮是

<form action="" name="operations" method="get" >
    <input type="button" name="in_delete" value="Delete" style="color:#fff; height:19px; width: 60px; font-size:10px; background-color: red;cursor: pointer;"><br>
</form>

1 个回复
SO网友:Krzysiek Dróżdż

好的,那么您的代码无法工作,因为您使用$wpdb->delete 不正确。

让我们看看Codex. $wpdb->delete 取3个参数(一个是可选的):

  • $table (字符串)(必需)表名。默认值:无$where (array)(必选)WHERE子句的命名数组(在列->值对中)。多个子句将与AND连接。$where列和$where值都应为“原始”。默认值:无$where_format(字符串/数组)(可选)要映射到$where中每个值的格式数组。如果是字符串,则该格式将用于$where中的所有项目。格式是“%d”、“f”、“s”(整数、浮点、字符串;有关详细信息,请参阅下文)之一。如果省略,$where中的所有值将被视为字符串,除非wpdb中另有规定::$field\\u types。默认值:null,返回:

    它返回更新的行数,错误时返回false。

    那么你的代码有什么问题

    $id = $print->id;
    $del =  $wpdb->delete( \'bookings\', $id );
    
    你通过了$id 作为第二个参数,但它只是一个数字,您应该传递一个where子句数组。。。

    那么它应该是什么样子呢

    foreach ( $result as $print ) {
        $del =  $wpdb->delete( \'bookings\', array( \'id\' => $print->id ) );
        if ( $del ) {
            echo "<script>
                      alert(\'record deleted\');
                  </script>";
        }
    }
    

结束

相关推荐

是否可以在Single.php中根据POST格式定制POST?

首先让我知道,我以前写过一个博客,我已经根据帖子格式进行了自定义,但我已经在博客主页(即索引)上进行了自定义。php。现在我正在制作另一个博客,我想通过帖子格式对其进行自定义,但这次我想自定义阅读页面上的帖子,即单篇。php(根据帖子类型)。是否可以这样做,或者我们只能在索引上自定义帖子格式。php。Update: Sorry:-其post格式不是post类型