为什么此查询不会从所有表中删除详细信息?

0 php mysql pdo

我试图在删除用户时从匹配用户 ID 的表中删除记录。但不知何故,它只从 cv 表中删除记录。

我正在尝试的是

if($_GET['deluser'] !='1'){

         $qr = "delete from members where member_id IN(".$_GET['deluser'].")";
         $qr = "delete from company where caller_id IN(".$_GET['deluser'].")";
         $qr = "delete from cv where agent_id IN(".$_GET['deluser'].")";
         $st = $db->prepare($qr);
         $st->execute();        

    header('Location: users.php?action=DELETED');
    exit;
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

Jos*_*eph 5

在您的情况下,您$qr每次都会覆盖该值,因此您需要执行它,每个人都单独执行,

您还需要修复SQL注入问题,以便您可以通过在execute方法中使用绑定数据或使用bindParam

首先,您需要添加?要传递的相同数量的输入

您可以检查它如何工作在这里的这个答案

$in  = str_repeat('?,', count(explode(',', $_GET['deluser'])) - 1) . '?';
Run Code Online (Sandbox Code Playgroud)
$qr = "delete from members where member_id IN($in)";
$st = $db->prepare($qr);
$st->execute(explode(',', $_GET['deluser']));   

$qr = "delete from company where caller_id IN($in)";
$st = $db->prepare($qr);
$st->execute(explode(',', $_GET['deluser']));   

$qr = "delete from cv where agent_id IN($in)";
$st = $db->prepare($qr);
$st->execute(explode(',', $_GET['deluser']));      
Run Code Online (Sandbox Code Playgroud)

您可以在文档中阅读有关BindParamExecute 的更多信息

  • [给你](/sf/answers/1033735601/) (2认同)