PHP/MySQL中的多查询替换
在PHP中,使用mysql_query()不支持多个查询,如何将以下代码转换为唯一查询 我不能将我的数据库更改为MySQLi或其他任何东西PHP/MySQL中的多查询替换,php,mysql,Php,Mysql,在PHP中,使用mysql_query()不支持多个查询,如何将以下代码转换为唯一查询 我不能将我的数据库更改为MySQLi或其他任何东西 SELECT @myLeft := lft FROM hierarchie WHERE id = ".$father_id."; UPDATE hierarchie SET rgt = rgt+2 WHERE rgt > @myLeft; UPDATE hierarchie SET lft = lft+2 WHERE lft > @myLeft;
SELECT @myLeft := lft FROM hierarchie WHERE id = ".$father_id.";
UPDATE hierarchie SET rgt = rgt+2 WHERE rgt > @myLeft;
UPDATE hierarchie SET lft = lft+2 WHERE lft > @myLeft;
INSERT INTO hierarchie VALUES(".$cat.", ".$id.", '".$fullindi."', @myLeft+1, @myLeft+2);
任何帮助都将不胜感激
致以最良好的祝愿
更新:
在回答我自己的问题时,我找到了链接:作者在哪里解释如何做
对我来说,按照他的解释,代码变成:
$sql = "
SELECT @myLeft := lft FROM hierarchie WHERE id = ".$father_id.";
UPDATE hierarchie SET rgt = rgt + 2 WHERE rgt > @myLeft;
UPDATE hierarchie SET lft = lft + 2 WHERE lft > @myLeft;
INSERT INTO hierarchie VALUES(".$cat.", ".$id.", '".$fullindi."', @myLeft + 1, @myLeft + 2);
";
$queries = preg_split("/;+(?=([^'|^\\\']*['|\\\'][^'|^\\\']*['|\\\'])*[^'|^\\\']*[^'|^\\\']$)/", $sql);
foreach ($queries as $query){
if (strlen(trim($query)) > 0) mysql_query($query);
}
我已经测试过了,效果很好
我们可以认为问题已经解决,除非其中一个有更好的解决方案。
< P>解决方案是使用,这样你就可以单独执行这些查询,但是它们会被认为是一个。START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summary=@A WHERE type=1;
COMMIT;
因此,例如,上面的示例需要4个mysql_query()命令,但mysql将作为一个查询执行整个过程 为什么不运行多个
mysql\u query()
命令?@JohnP,他不能运行多个命令,因为他需要在其他命令中使用一个命令的结果。@JohnP:这正是我需要单次查询的原因,正如itsols所说。@itsols,哇!应该更加关注查询本身@mlh,如果您找到的解决方案有效,您应该将其作为您自己问题的答案发布并接受。@itsols但@mlh最终运行了多个查询。嗯,那么该事务是为了什么?是的,可能我应该在答案中提到,但它写在链接页上。您确定要“午餐”吗查询?感谢您将“午餐”改为“执行”。