Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lỗi khi sử dụng array_push - Đối số đầu tiên phải là một mảng

Theo các nhận xét, $products được khởi tạo bởi một tệp bao gồm được bao gồm trong một hàm. Điều đó xác định phạm vi của nó đối với chức năng, thay vì toàn cầu. Vì vậy, bạn sẽ cần sử dụng global $products; trước khi gọi bao gồm.

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

Trong mọi trường hợp, tôi thấy việc sử dụng $GLOBALS['products'] sẽ dễ đọc hơn một chút thay vì global từ khóa. Và như mọi khi, bất cứ khi nào có thể, phương pháp ưu tiên là chuyển biến vào một hàm hơn là truy cập nó trên toàn cầu.

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

Tuy nhiên, trong trường hợp của bạn, nếu CMS xác định nó, bạn có thể mất tính linh hoạt để thực hiện theo cách đó ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có MySQL tương đương với sprintf không?

  2. php 5.x 7.x, lỗi ssl pdo:Chứng chỉ ngang hàng CN =`someName 'không khớp với mong đợi CN =' someIP '

  3. Kết nối với Cơ sở dữ liệu MySQL bằng PHP từ Thiết bị Android

  4. Làm thế nào để kết xuất có chọn lọc tất cả các bảng innodb trong cơ sở dữ liệu mysql?

  5. MySQL - Tìm điểm trong bán kính từ cơ sở dữ liệu