Wordpress wpdb->删除问题

时间:2018-05-16 12:27:17

标签: php wordpress

我试图以编程方式从数据库中删除记录。当我像这样硬编码时它确实从数据库中删除了一条记录:

$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'));

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

3 个答案:

答案 0 :(得分:1)

这就是我建议的方式:

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注入并安全地删除您的记录,如果失败则会返回错误消息:)

答案 1 :(得分:0)

我试过这样,它为我工作。

global $wpdb;

$id = (int) wp_get_current_user()->ID;
$time = (int) '4';
$table_name = 'testtable';
$wpdb->show_errors(); 
$wpdb->delete( $table_name, array( 'user_id' => $id, 'timeMin' => $time), array('%d','%d'));
$wpdb->print_error();

你有什么错误,请解释一下吗? 您可以使用show_errors()和print_error()方法打印错误。

答案 2 :(得分:-1)

请使用下面的代码,我认为它会起作用。

global $wpdb;

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

$table_name = $wpdb->prefix . 'table_name';
if (!empty($id)) 
{

  $wpdb->query($wpdb->prepare("DELETE FROM $table_name WHERE user_id IN($id)"));

}