繁体   English   中英

一个语句中有多个MySQL查询

[英]Multiple MySQL queries in one statement

我正在尝试将数据插入一个表并选择ID并在另一个与ID相关的表中插入其他信息,我的代码如下(我不是很先进,所以请耐心等待,我想解决这个问题而不是学习一些完全不同的东西,如果可能的话),这段代码最多可以“INSERT INTO sb_admins_servers_groups”然后停止。

    $sql = 'INSERT INTO sb_admins (user, authid, password, gid, email, validate, extraflags, immunity, srv_group, srv_flags, srv_password, lastvisit)
    VALUES (:name, :ID, "#######", "-1", "", "", "0", "0", "X Permissions", "", "", "");
    SELECT aid FROM sb_admins WHERE authid = :ID
    INSERT INTO sb_admins_servers_groups (admin_id, group_id, srv_group_id, server_id)
    VALUES (aid, "5", "4", "-1")';
    $s=$pdo->prepare($sql);
    $s->bindvalue('name', $player->name);

    $s->bindvalue('ID', $player->uniqueid);

    $s->execute();
    }
    catch(PDOException $e)
    {
    echo "There was an error " . $e->getMessage() . "";
    exit();
    }

我认为在SELECT aid FROM sb_admins WHERE authid = :ID之后缺少分号(“;”)。 它应该是SELECT aid FROM sb_admins WHERE authid = :ID;

您在第二次查询后错过了分号,但这不是您唯一的问题。

您的SELECT将选择值,但不存储它。 当您进入第三个查询时, aid没有任何价值,因此您的查询将以某种方式失败。

您可以组合第二个和第三个查询,以避免存储临时结果。 使用INSERT...SELECT

INSERT INTO sb_admins_servers_groups (admin_id, group_id, srv_group_id, server_id) 
    SELECT aid,  "5", "4", "-1" FROM sb_admins WHERE authid = :ID

MySQL参考: http//dev.mysql.com/doc/refman/5.5/en/insert-select.html

但是,除非您先打开PDO仿真,否则我认为您不会使用多查询表单来处理预准备语句

$s->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);

说实话,我认为你应该准备并执行两个单独的查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM