php - 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'));
为什么使用变量的动态代码不起作用,我该如何解决?
解决方案
这就是我建议这样做的方式:
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 注入并安全删除您的记录,如果失败,将返回错误消息 :)
推荐阅读
- javascript - 强制滚动 div 元素停止
- unity3d - 如何在 Unity 项目之间传输数据
- angular - 在角度分量之间使用静态数据
- perl - 如何在 Perl 中从 XML 文件中获取数据?
- javascript - 来自设备的 JSON 格式不正确
- unity3d - 当尝试在 Unity 中使用 Mapbox SDK 导出项目的 APK 时,它会崩溃 IL2CPP 错误
- node.js - 防止同一用户同时登录不同系统
- java - 如何在 Spring Cloud Netflix Zuul 上配置简单的速率限制?
- java - 如何避免在集成测试期间调用 Slack webhook
- mysql - 根据不同列的其中一行的值返回具有相同 id 的所有行