sql >> Databáze >  >> RDS >> Mysql

Chyby při použití array_push -- První argument by mělo být pole

Podle komentářů $products byl inicializován zahrnutým souborem, který byl součástí funkce. To definuje její rozsah pro funkci, nikoli globálně. Budete tedy muset použít global $products; před voláním include.

function func_that_defined_products() {
  global $products;
  include('file_that_defines_products.php');
}

// Now when called globally later, it will be at the correct scope.


function foo($bar) 
{
    global $products; 
    $query = 'SELECT p_name FROM 0_products WHERE p_category IN (' . $bar . ')';
    // etc...
}

V každém případě mi připadá trochu čitelnější použít $GLOBALS['products'] místo global klíčové slovo. A jako vždy, všude, kde je to možné, je preferovanou praxí předat proměnnou do funkce spíše než k ní přistupovat globálně.

// If you can, do it this way
function foo($bar, $products) {
  // $products was a param, and so global is unnecessary
}

Nicméně ve vašem případě, pokud to CMS definuje, můžete ztratit flexibilitu dělat to tímto způsobem...



  1. Jednoduchý dotaz na MySQL

  2. Skryté funkce SQL Server

  3. Extrahování dílčích značek XML z clobu v Oracle přes SQL

  4. PostgreSQL předává data z rekurzivního CTE do funkce