sql >> Database >  >> RDS >> Mysql

Fouten bij het gebruik van array_push -- Eerste argument moet een array zijn

Volgens de opmerkingen, $products werd geïnitialiseerd door een opgenomen bestand dat in een functie was opgenomen. Dat definieert de reikwijdte van de functie, in plaats van globaal. U moet dus global $products; . gebruiken voordat je de include belt.

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...
}

Ik vind het in ieder geval iets leesbaarder om $GLOBALS['products'] te gebruiken in plaats van de global trefwoord. En zoals altijd verdient het de voorkeur om, waar mogelijk, de variabele door te geven aan een functie in plaats van deze globaal te benaderen.

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

In uw geval, als het CMS het definieert, verliest u mogelijk de flexibiliteit om het op die manier te doen...



  1. Hoe voorkom je dat dbms_output.put_line leidende witruimte bijsnijdt?

  2. Een parameterquery maken in Access

  3. Hoe Importeren en Vereisen samen?

  4. Oracle - Indexgebruik met optionele parameters