php - MySQL 在哪里(数组)

标签 php mysql pdo sql-in

<分区>

function delete_group($db) {
    $ids = Parameters::get('ids');
    $ids = implode(',', $ids); // now a string like '5,6,7'.
    add_to_log($ids);
    try {
        $stmt = $db->prepare("DELETE FROM mytable WHERE id IN (:ids)");
        $stmt->bindParam(':ids', $ids, PDO::PARAM_STR);
        $stmt->execute();
        response('success', 'success', NULL);
    }
    catch (PDOException $e) {
        response('error', 'Delete group failed.', NULL);
    }
}

这段代码不起作用:只删除了第一行。但如果我这样做

$stmt = $db->prepare("DELETE FROM mytable WHERE id IN ($ids)");

相反(只需插入字符串),它可以工作,尽管代码存在 SQL 注入(inject)安全问题。如何使其发挥作用并保持安全?

最佳答案

$ids = Parameters::get('ids');
$ids = array_map('intval', $ids);
$ids = implode(',', $ids);

现在您不必担心注入(inject)问题。

关于php - MySQL 在哪里(数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939966/

相关文章:

php - isset() 的快捷方式和赋值

php - 带有 JSON 和 PHP 的动态行不会输出数据

MySQL PDO - 通过联接分组的表的最新行

PHP PDO 相关 : Update SQL statement not updating the content of the database

javascript - polymer 铁型输出误差

javascript - 服务器在 ajax 提交时给出 403 错误

PHP While 循环从多个 'Joined' 表中分离唯一类别

sql - 如何仅使用 SQL 减去 mySQL 表中的所有价格?

PHP Mysqli 查询不断返回 false

php - 每 30 秒获取一次表数据