De foreach
gebruiken benadering van mijn antwoord
op een andere van uw vragen is geen goed idee bij het omgaan met opgeslagen procedures.
Hoewel het werkt (zoals getoond in uw vraag, worden de variabelen ingesteld in de $params
array na uitvoering) is het grootste probleem dat u de vierde parameter moet opgeven (maxlength
) naar oci_bind_by_name
. U heeft een statische waarde van 32
. gebruikt in uw code, maar er wordt een fout gegenereerd wanneer de lengte van een waarde deze overschrijdt. Het kan niet tijdens runtime worden berekend en het is inefficiënt om het in te stellen op een zeer hoge waarde (misschien is dit geen probleem voor uw toepassing).
Aangezien u een bekende opgeslagen procedure uitvoert, moet u de maxlength
. kennen van uitvoerwaarden tijdens het ontwerp en deze kunnen statisch worden ingevoerd door alle oci_*
functies in getHours()
, in plaats van te proberen alle aanroepen naar customExecute()
te abstraheren .