我正在尝试运行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一起使用。
我怎样才能克服这个?
答案 0 :(得分:0)
这可能会更好:
(将tbl1.rank设置为自动增量)
TRUNCATE tbl1
;
INSERT INTO tbl1
(myId
)SELECT myId FROM tbl2
ORDER BY rank DESC;
这是两个单独的命令,但您不必担心变量问题。它没有回答“如何在一个字符串中运行两个不同的命令”或“如何在PHP查询中使用变量”的问题,但如果您只是想重新排序事物,那应该可行。
Truncate将清空tbl1并将自动增量值重置为1