首页 > 解决方案 > Wordpress wpdb->删除问题

问题描述

我正在尝试以编程方式从数据库中删除一条记录。当我像这样对其进行硬编码时,它确实会从数据库中删除一条记录:

$wpdb->delete( $table_name, array( 'user_id' => 1, 'timeMin' => 10), array('%d', '%d') );

但是,当我尝试使用变量以动态方式执行此操作时,它不起作用。我什至尝试强制转换变量以int确保它们是正确的类型。

$id = (int) wp_get_current_user()->ID;
$time = (int) $_POST['umjp_time'];

$wpdb->delete( $table_name, array( 'user_id' => $id, 'timeMin' => $time), array('%d','%d'));

为什么使用变量的动态代码不起作用,我该如何解决?

标签: phpwordpress

解决方案


这就是我建议这样做的方式:

function vendor_module_remove_dealer($data)
{
    global $wpdb;

    $sql = 'DELETE FROM `'. $wpdb->prefix .'my_table` WHERE `primary_id` = %d;';

    try {
        $wpdb->query($wpdb->prepare($sql, array($data['primary-id'])));

        return true;
    } catch (Exception $e) {
        return 'Error! '. $wpdb->last_error;
    }
}

这将防止 SQL 注入并安全删除您的记录,如果失败,将返回错误消息 :)


推荐阅读