Как передать переменные в функцию из переменной - PullRequest
0 голосов
/ 24 августа 2018

У меня проблема с созданием запроса через функцию (все остальные переменные работают правильно) У меня есть функция, которая неправильно печатает переменные (в точности $ NomiFarmacie и $ day)

//The problem is present in this function
function Cicla($Periodo, $FarmacieRiordinate, $Query) {
    global $tabella_calendario, $count; //them works

    foreach ($Periodo as $giorno)   {
        $day = $giorno->format("Y-m-d");
        $NomiFarmacie = addslashes($FarmacieRiordinate[$count % count($FarmacieRiordinate)]);

        echo $NomiFarmacie; echo $day; //Both are correct
        print_r($Query); //Queries are not completed correctly. OUTPUT Below
        $count++;
    }
}

$FarmacieRiordinate = $_POST['elementi'];
$DataIniziale = $_POST['data1'];
$DataFinale = $_POST['data2'];
$Query = ("UPDATE $tabella_calendario SET Farmacia='$NomiFarmacie' WHERE Data='$day'");

Cicla(CalcolaPeriodo($DataIniziale, $DataFinale), $FarmacieRiordinate, $Query);

ЧАСТЬ ВЫХОДА print_r ($ Query)

UPDATE calendario SET Farmacia='Array' WHERE Data='1546297200'
UPDATE calendario SET Farmacia='Array' WHERE Data='1546297200'
UPDATE calendario SET Farmacia='Array' WHERE Data='1546297200'
UPDATE calendario SET Farmacia='Array' WHERE Data='1546297200'

1 Ответ

0 голосов
/ 24 августа 2018

Проблема в том, что ваша $Query уже объединена как строка ДО того, как передана в вашу функцию.В этом случае вы можете использовать vsprintf.

function Cicla($Periodo, $FarmacieRiordinate, $Query) {
    global $tabella_calendario, $count; //them works

    foreach ($Periodo as $giorno)   {
        $day = $giorno->format("Y-m-d");
        $NomiFarmacie = addslashes($FarmacieRiordinate[$count % count($FarmacieRiordinate)]);

        echo $NomiFarmacie; echo $day; //Both are correct
        $realQuery = vsprintf($Query, array($NomiFarmacie, $day));
        print_r($realQuery); //Queries are not completed correctly. OUTPUT Below
        $count++;
    }
}

$FarmacieRiordinate = $_POST['elementi'];
$DataIniziale = $_POST['data1'];
$DataFinale = $_POST['data2'];
$Query = ("UPDATE $tabella_calendario SET Farmacia='%s' WHERE Data='%s'");

Cicla(CalcolaPeriodo($DataIniziale, $DataFinale), $FarmacieRiordinate, $Query);

Подробнее о vsprintf вы можете прочитать здесь:

http://php.net/manual/en/function.vsprintf.php

.

...