在php中执行多个查询

问题描述 投票:-1回答:2

我正在尝试加入在查询中创建的两个视图。该查询在mySql中工作正常,但是当我使用php执行该查询时,它似乎并未实际执行,因为我无法可视化数据库中的两个视图。

我正在执行的查询如下:

$query1 = "CREATE OR REPLACE VIEW new_tbl AS SELECT
AnagTav.Id,
AnagTav.Riga,
AnagTav.Colonna,
AnagTav.Costo,
AnagTav.Nome,
AnagTav.NumeroPersone,
PrenPic.Data AS Occupato,
PrenPic.IdUtente
FROM `AnagraficaTavoli` AS AnagTav
LEFT JOIN PrenotazioniPicNic AS PrenPic ON PrenPic.IdTavolo = AnagTav.Id
WHERE (PrenPic.Data >= '".$dateFrom."' AND PrenPic.Data <= '".$dateTo."')
OR PrenPic.Data IS NULL
GROUP BY CASE
WHEN AnagTav.Nome != '' THEN AnagTav.Nome
ELSE AnagTav.Id
END
ORDER BY AnagTav.Riga ASC, AnagTav.Colonna;

CREATE OR REPLACE VIEW new_tbl2 AS SELECT 
AnagraficaTavoli.*,
Occupato,
IdUtente
FROM AnagraficaTavoli
LEFT JOIN new_tbl ON (AnagraficaTavoli.Id = new_tbl.Id)
WHERE new_tbl.Id IS NULL;";
$result=$conn->query($query1); 

创建两个视图后,我执行第二个查询:

if($result){
    $query2 = "SELECT * FROM new_tbl
    UNION
    SELECT * FROM new_tbl2
    ORDER BY Riga ASC, Colonna;";
    $resultList=$conn->query($query2); 
    while($rowList=$resultList->fetch_assoc())
    {
        //I do stuff here
    }
}

[$conn是我与数据库的连接

我尝试打印查询并在mySql上执行它,但是效果很好。我不知道为什么会收到此错误,也不知道如何解决。任何帮助都可以申请!

php mysql view
2个回答
0
投票

这可能并不明显,但是如果保持脚本连接,则可以在单独的查询中访问临时表。您应该做的是将查询分为三个不同的操作,尤其是“选择”是一个单独的操作。在查询中只有一个选择语句,php将能够正确获取结果集。


0
投票

这里是您如何执行此操作的。。

$query1= " CREATE VIEW new_tbl AS SELECT
AnagTav.Id,
AnagTav.Riga,
AnagTav.Colonna,
AnagTav.Costo,
AnagTav.Nome,
AnagTav.NumeroPersone,
PrenPic.Data AS Occupato,
PrenPic.IdUtente
FROM `AnagraficaTavoli` AS AnagTav
LEFT JOIN PrenotazioniPicNic AS PrenPic ON PrenPic.IdTavolo = AnagTav.Id
WHERE (PrenPic.Data >= '".$dateFrom."' AND PrenPic.Data <= '".$dateTo."')
OR PrenPic.Data IS NULL
GROUP BY CASE
    WHEN AnagTav.Nome != '' THEN AnagTav.Nome
    ELSE AnagTav.Id
END
ORDER BY AnagTav.Riga ASC, AnagTav.Colonna;


CREATE VIEW new_tbl2 as SELECT 
AnagraficaTavoli.*,
Occupato,
IdUtente
FROM AnagraficaTavoli
LEFT JOIN new_tbl ON (AnagraficaTavoli.Id = new_tbl.Id)
WHERE new_tbl.Id IS NULL;"

$result=$conn->query($query1); 

然后

if($result){
$query2 = "SELECT * FROM new_tbl
UNION
SELECT * FROM new_tbl2
ORDER BY Riga ASC, Colonna;"; 

$resultList=$conn->query($query2); 
while($rowList=$resultList->fetch_assoc())
{
    //I do stuff here
}

}
© www.soinside.com 2019 - 2024. All rights reserved.