Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP使用用户定义的变量运行多个MySQL查询_Php_Mysql_Sql_Pdo_Mysqli - Fatal编程技术网

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

通过PHP使用用户定义的变量运行多个MySQL查询,php,mysql,sql,pdo,mysqli,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

我正在尝试从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中,我只是希望它能与查询函数一起工作


如何克服这一问题?

这可能会更好:

将tbl1.rank设置为自动递增

截断tbl1

插入tbl1 myId中,按等级描述从tbl2中选择myId

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


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

是否选中:?这是可以考虑的。duplicate@CharlesRojas这个问题是特定于PDO的。实际上,mine主要讨论MySQLi,并显示了一个特定的查询,该查询可能会导致一个完全不同的解决方案在没有用户定义变量的情况下执行相同的操作。正如您的问题所示:要让两个查询都为该检查运行:,所以,也许可以编辑你的问题,解释一下真正的目标是什么。。这样我就明白了:将我的ID从一个表重新排列到另一个表,在这种情况下,尽我所能,您拥有的是最好的解决方案