Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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 - Fatal编程技术网

PHP/MySQL中的多查询替换

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;

在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;
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最终运行了多个查询。嗯,那么该事务是为了什么?是的,可能我应该在答案中提到,但它写在链接页上。您确定要“午餐”吗查询?感谢您将“午餐”改为“执行”。