php - 从 WordPress 自定义表中删除行

标签 php mysql wordpress

我正在尝试从 WordPress 自定义表中读取数据。我创建了表并从中获取数据。现在我需要为表中的每一行创建链接,当我单击链接时,它应该只删除一行。

global $wpdb;
    $table_name = $wpdb->prefix . 'customtable';
    $sql = "SELECT * FROM $table_name";
    $check = $wpdb->get_results($sql);
    echo '<div class="col-lg-2">';
foreach ($check as $loc){
        echo $loc->row1;
        echo '<br>';
        echo '<form action="" method="post" enctype="multipart/form-data">';
        echo '<input type="submit" name="delete" value="Delete" />';
        echo '</form>';
        echo '<br>';

    }

    echo '</div>';
    if( isset( $_REQUEST['delete'] ))
{
    $wpdb->delete( $table_name, [ 'id' => $loc->id] );
}

链接有效,但我无法删除特定行。

我尝试创建函数删除

function delete($id){
    global $wpdb;
    $table_name = $wpdb->prefix . 'customtable';
     $wpdb->delete( $table_name, [ 'id' => $id] );

}

然后在我定义的 foreach 循环之外

if (isset($_REQUEST['delete'])){
        $this->delete($loc->id);

    }

但同样只有最后一行被删除。

最佳答案

所以我想出了这个解决方案。如果我在 foreach 循环内部调用删除链接,它将删除整个表,如果我在外部调用它,它只会删除最后一行。 我在插件文件夹中制作了 php 脚本并将 id 发布到其中。

$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$url = $_SERVER['REQUEST_URI'];
$my_url = explode('wp-content' , $url); 
$path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0];
include_once $path . '/wp-config.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';
if (isset($_REQUEST['ID'])){
$id = $_REQUEST['ID'];
delete_row($id);

}

function delete_row($id){
    global $wpdb;
     $table_name = $wpdb->prefix . 'customtable';
     $wpdb->query( 
 $wpdb->prepare( 
    "
            DELETE FROM $table_name
     WHERE id = %d",
        $id
    )
);
}

以及从数据库读取所有数据并生成删除链接的内部函数:

foreach ($check as $loc){
        echo $loc->location;
        echo '<br>';
        echo '<a name="delete" href="'.$dir.'delete_loc.php?ID=' . $loc->id . '">delete</a>';
        echo '<br>';

    }

关于php - 从 WordPress 自定义表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38181679/

相关文章:

php - 如何删除网页脚本中的\ufeff 字符?

php - Processing Conflict : php55w-mysql-5. 5.30-2.w6.x86_64冲突php55w-mysqlnd

php - 了解: From PHP Array to Python?

mysql - 使用 MySql 仅在 varchar 数据字段中获取日期

html - 我的网站在我的桌面上显示为空白页面

PHP fatal error : Class 'PDO' not found

MySQL存储大量小数位

mysql - REGEX 由子查询开始

wordpress - 添加到购物车按钮显示 Woocommerce 中缺货的可变产品

php - 导航栏仅在 IE 中闪烁