Bir oturum değişkeni ile foreach

4 Cevap php

Benim oturum değişkeni her nesne üzerinde iterate istiyorum. 'Ürün' Ben kitap bilgilerini depolamak için oluşturduğunuz bir sınıf türü öğe olduğunu. Ben bu yüzden en az bir kez yinelemek gerektiğini düşündüm 1 döndüren bir sayımını ($ _SESSION ['ürün']) yapmış. Ama şans. Teşekkürler

  foreach ($_SESSION['items'] as $item) {
	  echo TEST;
	  $sql = 'SELECT * FROM item WHERE Item_ID = '.$item->Get_Item_ID;
	var_dump($sql);
	}

4 Cevap

Neden bir oturum değişkeni bir nesneyi depolamak?

http://php.net/manual/en/function.serialize.php

Eğer bir tanımlama içinde saklayabileceğiniz bir biçime nesneyi serialize ve serisini mümkün olmalıdır.

Bence $ _SESSION can mağaza dizeleri ve diziler sadece.

Sana never böyle bir iç içe döngü içinde bir sorgu gerçekleştirmek gerektiğini belirtmek isterim. Aksine, bu tür gibi sorgu nitelemek gerekir ....

$sql = "SELECT * FROM item WHERE Item_ID IN (".implode(",", $_SESSION['items']).")";

Tabii ki, o $_SESSION['items'] en az bir değere sahip bir dizidir sağlamak gerekir, ve tüm değerleri $_SESSION['items'] aslında tamsayılar olan (veya dize gibi tamsayılar [için iletebilirsiniz "6"]).

Ben nesneyi unserialize serialize / unuttum düşünüyorum. Bu sadece bir oturum değişkeni içine bir nesne atamak mümkün değildir. Oturum nesne var durur bir dosya içine yazılır alır çünkü bu. serialization Oturumu'nda içine bir nesne saklamak için kullanın.

Sayfa 1:

 $user = new User();
 $_SESSION['user'] = serialize($user);

Sayfa 2:

 $user = unserialize($_SESSION['user']);

Best wishes,
Fabian

Son bir şey, oturumdaki nesneleri de-serializing önce tipi 'madde' için sınıf tanımı yüklendiğinden emin olun. Erişim alanları veya nesne üzerinde yöntemlere çalışırken Aksi takdirde hata alırsınız.