Dzień dobry.
Mam taki problem:
Próbuję zainstalować w bazie funkcje użytkownika (moje). Jednak ciągle coś mu nie pasuje. Na Stacku pisali by wywalić DELIMITER
, ale i tak nie działa. Z DELIMITER
em działało przez phpMyAdmin, ale w php nie. Po usunięciu delimitera nie działa ani tu, ani tu. Wklejam kod jednej z funkcji:
DROP FUNCTION IF EXISTS zwrocDlaMom;;
CREATE FUNCTION zwrocDlaMom(showId int)
RETURNS DECIMAL(12, 6)
BEGIN
DECLARE wynik DECIMAL(12, 6);
SET wynik =
(SELECT www.res
FROM
(
select sho.id as one, tit.title as two, sts.id as three, 1.0 / 100.0 * (100 - tit.cinema) * sts.amount * tit.duration /
(
select xxx as test
from
(
select ss.setId, sum(duration) as xxx
from shows ss
join movies mvt on mvt.id = ss.title
where ss.setId = sts.id
group by ss.setId
) as test
) as res
from movies tit
join shows sho on sho.title = tit.id
join invoices invo on invo.id = sho.invoice and invo.company = tit.company
join sets sts on sts.id = sho.setId
where sho.id = showId
) as www);
return wynik;
end;;
I kod php instalujący:
function executeMultiQuery($multiQuery)
{
connectTo();
global $debugMode;
global $wrongQuery;
global $connection;
global $dbName;
//useDb($dbName);
$result = $connection->multi_query($multiQuery);
if ($result == FALSE && $debugMode == TRUE)
$wrongQuery = "Błąd w zapytaniu: " . $multiQuery . "<br>";
return $result;
}
$files = scandir("./queries");
foreach ($files as $fileName)
if ($fileName != "." && $fileName != "..")
if (executeMultiQuery(file_get_contents("./queries/" . $fileName)) == FALSE)
{
printWrongQuery();
exit("<br>BŁĄD");
}
executeMultiQuery
zwraca false i mówi, tak jak zaprogramowałem, że jest błąd w zapytaniu.
phpMyAdmin mówi: #1064 - Something is wrong in your syntax obok '' w linii 4
Proszę o pomoc.
Dzieki
Michał