通过PHP使用用户定义的变量运行多个MySQL查询

时间:2014-12-04 13:58:23

标签: php mysql sql pdo mysqli

我正在尝试运行PHP的查询组合。像这样:

SELECT @rownum:=0; INSERT INTO tbl1 (`myId`, `rank`) (SELECT myId, @rownum:=@rownum+1 FROM `tbl2` WHERE 1 ORDER BY rank DESC)

由于用户定义的var(@rownum),我必须“一起”运行这些查询。我尝试过使用mysqli或PDO,但两者似乎都阻止了这一点。

我试过的mysqli用法是:

    public function multiQuery($query) {
        if (@parent::multi_query($query)) {
            $i = 0; 
            do { 
                $i++; 
            } while (@parent::next_result()); 
        }
        if (!$result) {
            printf("MySQLi error:<br><b>%s</b><br>%s <br>", $this->error, $query);
        }

        return $result;
    }

在PDO中,我只是希望它能与query() func一起使用。

我怎样才能克服这个?

1 个答案:

答案 0 :(得分:0)

这可能会更好:

(将tbl1.rank设置为自动增量)

TRUNCATE tbl1;

INSERT INTO tbl1myId)SELECT myId FROM tbl2 ORDER BY rank DESC;

这是两个单独的命令,但您不必担心变量问题。它没有回答“如何在一个字符串中运行两个不同的命令”或“如何在PHP查询中使用变量”的问题,但如果您只是想重新排序事物,那应该可行。

Truncate将清空tbl1并将自动增量值重置为1