mariadb 我的请求中有错误,但哪一个错误?

vof42yt1  于 2022-11-08  发布在  其他
关注(0)|答案(3)|浏览(157)

我的请求功能有问题:

function rdvDelete($rdv)
{
    $pdo = connexion();
    $sql = $pdo->prepare("DELETE FROM visitors,rdvs WHERE rdvs.idRdv = :rdv AND visitors.idVisitor = rdvs.idVisitor"); <-- line 34
    $sql->execute(['rdv' => $rdv]);
}

$rdv = 3!!!
这会显示此错误
[错误代码] 639#639:*9791 FastCGI在标准错误中发送:“PHP消息:PHP致命错误:未捕获的PDO异常:数据库状态[42000]:语法错误或访问冲突:1064 1064您的SQL语法有错误;查看与您的MariaDB服务器版本相对应的手册,了解在/var/www/MY-WEBSITE/model/m_manage-rdvs.php中第1行的“WHERE rdvs.idRdv =?AND visitors. idVisitor = rdvs.idVisitor”附近使用的正确语法:34
谢谢

lp0sw83n

lp0sw83n1#

我认为您的预准备语句有错误。在使用参数的实际值执行之前,您需要在语句中指定两个参数。

function rdvDelete($rdv)
{

    $pdo = connexion();
    $sql = $pdo->prepare("DELETE FROM visitors,rdvs WHERE rdvs.idRdv = :rdv AND visitors.idVisitor = :rdvs); <-- line 34
    $sql->execute(['rdv' => $rdv, 'rdvs' = $rdvs]);
}
oyxsuwqo

oyxsuwqo2#

SQLite不支持DELETE语句中的显式或隐式联接。您正在尝试在FROM子句中使用逗号分隔的表并在WHERE中使用联接条件进行隐式联接。对于相关的删除语句,请考虑在子查询中使用INEXISTS运算符:
第一个

gcxthw6b

gcxthw6b3#

我用这个查询解决了我的问题:

DELETE visitors, rdvs FROM visitors INNER JOIN rdvs ON visitors.idVisitor = rdvs.idVisitor WHERE rdvs.idRdv = :rdv

相关问题