Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreurs lors de l'utilisation de array_push -- Le premier argument doit être un tableau

Selon les commentaires, $products a été initialisé par un fichier inclus qui a été inclus dans une fonction. Cela définit sa portée à la fonction, plutôt que globalement. Vous devrez donc utiliser global $products; avant d'appeler l'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...
}

En tout cas, je trouve un peu plus lisible d'utiliser $GLOBALS['products'] au lieu du global mot-clé. Et comme toujours, dans la mesure du possible, il est préférable de passer la variable dans une fonction plutôt que d'y accéder globalement.

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

Cependant, dans votre cas, si le CMS le définit, vous risquez de perdre la flexibilité de le faire de cette façon...