我正在尝试以编程方式从数据库中删除一条记录。当我像这样对其进行硬编码时,它确实会从数据库中删除一条记录:
$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'));
为什么使用变量的动态代码不起作用,我该如何解决这个问题?
最佳答案
这是我推荐的做法:
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 注入(inject)并安全地删除您的记录,如果失败,将返回错误消息:)
关于php - Wordpress wpdb->删除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50370947/