與在PHP中一樣,使用mysql_query()不支持多個查詢,我如何將以下代碼轉換爲唯一查詢?PHP/MySQL中的多個查詢替換
我確切地說我無法將數據庫更改爲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);
任何幫助將不勝感激。
此致敬禮。
UPDATE:
回答我自己的問題,我發現鏈接:http://www.dev-explorer.com/articles/multiple-mysql-queries在這裏筆者expalins如何做到這一點。
對於我來說,並按照他的解釋,代碼變爲:
$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);
}
我測試過,而且運作良好。
我們可以認爲問題已解決,除非您有其中一方有更好的解決方案。
爲什麼不只是運行多個'mysql_query()'命令? – JohnP 2011-05-14 07:16:17
@JohnP,他不能運行多個命令,因爲他需要使用其他人的結果。 – itsols 2011-05-14 07:23:03
@JohnP:這就是爲什麼我需要一個單一的查詢,正如其所說的。 – mlh 2011-05-14 07:26:07