Php 一条语句中的多个SQL查询

Php 一条语句中的多个SQL查询,php,mysql,database,Php,Mysql,Database,我想在一个语句中执行多个查询,这是我的代码,它不起作用 $stmt = $mysqli->prepare("UPDATE menu SET DESCRIPTION= ('$txt1'), VISIBLE=('$ckHOME1') where id='1'; UPDATE menu SET DESCRIPTION= ('$txt1'), VISIBLE=('$ckHOME1') where id='1'; UPDATE menu SET DESCRIPTION= ('$txt2'),

我想在一个语句中执行多个查询,这是我的代码,它不起作用

$stmt = $mysqli->prepare("UPDATE  menu SET DESCRIPTION= ('$txt1'), VISIBLE=('$ckHOME1')
where id='1';
UPDATE  menu SET DESCRIPTION= ('$txt1'), VISIBLE=('$ckHOME1') where id='1';
UPDATE  menu SET DESCRIPTION= ('$txt2'), VISIBLE=('$ckHOME2') where id='2';
UPDATE  menu SET DESCRIPTION= ('$txt3'), VISIBLE=('$ckHOME3') where id='3';
UPDATE  menu SET DESCRIPTION= ('$txt4'), VISIBLE=('$ckHOME4') where id='4';");
$stmt->execute();
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
mysqli_close($con);
}
您必须使用在一个调用中执行多个查询

但无需对您正在做的事情进行多次查询:

UPDATE menu 
SET description = 
        CASE id
            WHEN 1 THEN '$txt1'
            WHEN 2 THEN '$txt2'
            WHEN 3 THEN '$txt3' 
            WHEN 4 THEN '$txt4'
        END,
    visible = 
        CASE id
            WHEN 1 THEN '$ckHOME1'
            WHEN 2 THEN '$ckHOME2'
            WHEN 3 THEN '$ckHOME3' 
            WHEN 4 THEN '$ckHOME4'
        END
WHERE id IN (1, 2, 3, 4);

或者,您也可以使用
CASE
将其设置为一个
UPDATE
语句

UPDATE  menu 
SET     
        DESCRIPTION = CASE WHEN id = 1 THEN '$txt1'
                            WHEN id = 2 THEN '$txt2'
                            WHEN id = 3 THEN '$txt3'
                            WHEN id = 4 THEN '$txt4'
                    END,
        VISIBLE = CASE WHEN id = 1 THEN '$ckHOME1'
                            WHEN id = 2 THEN '$ckHOME2'
                            WHEN id = 3 THEN '$ckHOME3'
                            WHEN id = 4 THEN '$ckHOME4'
                    END
where   id IN (1, 2, 3, 4)

为什么要执行两次第一次更新?如果使用
mysqli\u prepare
,为什么要插入变量而不是使用占位符?我想知道检查
是否(!mysqli\u query…
正在执行:D@user2990463您可以用调用
mysqli\u query
的方式来调用它。非常感谢各位先生,它非常棒!