döngüler. Neden foreach'i bir kereden fazla kullanamıyorum? Nasıl düzeltebilirim lütfen?PHP/PDO PDO deyimi birden çok kez birden foreach kullanarak Aşağıdaki kod var
cevap
$sqlQueryLocalityAdd
bir sonuç kümesi değil, bir PDOStatement
nesnesidir ve bunu yalnızca bir kez doğrudan değiştirebilirsiniz (açık bir şekilde belirtildiği gibi).
execute()
ifadesi, boolean
ifadesini döndürür true veya false sorgunun başarısı. Bunun üstesinden kadar çok kez yinelemek böylece
$success = $sqlQueryLocalityAdd->execute(array(':country_add' => $postCountryAdd));
if($success) {
$results = $sqlQueryLocalityAdd->fetchAll();
foreach($results as $localityAddRow) {
echo '<option value="';
....
çıkan dizi $results
, sadece vanilya dizidir: başarılı bir şekilde çalışırsa
, post-sorgu ondan sonuçlarını getirmek ve dizi dönen yinelemek gerekiyor istediğin gibi.
Not: execute()
yanlış döndürürse, sorguda bir sorun var - boş bir sonuç kümesini döndüren başarılı bir çalışma sorgusu sonuçları yine de true
ile sonuçlanacaktır.
'PDOStatement' Traversable' uygular, böylece * doğrudan * yineleyebilirsiniz! – deceze
@deceze gerçekten öyle, iyi bir nokta.Tam olarak nasıl uygulandığını gösteren belgeleri bulamıyor, tam olarak ne beklediğinden emin değilsiniz. Sahnenin arkasında bir şey mi var? Sonuçların üzerinde yineleme olacağına inanır. – Ray
'' ($ row = $ stmt-> fetch()) '... – deceze
$sqlQueryLocalityAdd
bu durumda bir olan bir nesnedir - gösteriyorum ve OP kullanmış - yinelenemez. (cesur yani @deceze anlayabilir).
Ancak bunu gerçekleştirmek için foreach
döngüsünde fetchAll()
döngüsünü kullanabilirsiniz.
Kodunuz şöyle görünmelidir:
[...]
if($sqlQueryLocalityAdd->execute(array(':country_add' => $postCountryAdd)):
foreach($sqlQueryLocalityAdd->fetchAll() as $row):
echo $row['column'];
[...]
endforeach;
endif;
[...]
Nesneleri, özellikle de PDOStatement'in yaptığı gibi, Traversable'ı uyguladıkları zaman, gerçekten iyi bir şekilde sorgulayabilirsiniz. – deceze
Bunu hiç görmediniz, ama bu onun sorusunu cevaplıyor ... 'Sadece' düzenleyeceğim. @deceze – KDOT
Hala yanlış olan "yinelenemeyen" diyorsunuz. OP aynı zamanda (şifreli), bir kez * çalıştığını söyler (soruyu doğru olarak yorumlarsam). – deceze
sorun sonuç kümesi yalnızca bir kez iterated olmasıdır; o zaman bitkin olur, MySQL onu atar ve tekrar yineleyemezsiniz.
Aslında bu hiç denemedim, ancak birkaç kez tekrarlanır edilebilir bir sonuç kümesi oluşturmak için, size thusly oluşturmak mümkün olmalıdır bir kaydırılabilir imleci, gerek:
$sqlQueryLocalityAdd = $dbh->prepare(..., [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL]);
Daha sonra teorik olarak sonucu birkaç kez yineleyebilirsiniz.
Bu işe yaramazsa, verileri $sqlQueryLocalityAdd->fetchAll()
kullanarak bir diziye getirin ve istediğiniz sıklıkta yineleyin. Aslında, bu MySQL ile tek seçenek olarak görünüyor: https://stackoverflow.com/a/19076778/476
Sonunda anladım. Kafa karıştırıcı kısım OP sadece tek bir foreach bloğu gösterir. İfadenin oluşturduğu sonuç kümesinin ilk tam yinelemesinin bir adımı olarak ölmüyor, ama ölüyor, çünkü bir yerlerde daha sonra (postayla gösterilmiyor) başka bir foreach iterasyonunu deniyor. – Ray
@Ray Ding ding ding ding! Bir kazananımız var! – deceze
- 1. Python Kod Döngü Birden Çok Kez
- 2. günün birden çok kez
- 3. FactoryGirl: birden çok kez
- 4. Birden çok değerle akış foreach?
- 5. chrome.tabs.onUpdated.addListener() birden çok kez çağrıldı
- 6. jquery birden çok kez tıklandığında
- 7. Birden çok kez dökümden kaçınmak
- 8. R foreach birden çok çekirdek kullanmıyor
- 9. Sorgu, aynı sonucu birden çok kez verir
- 10. socket.io birden çok kez yayar
- 11. MySQL tabloları birden çok kez
- 12. çağrı deleteRowsAtIndexBir kez birden çok kez geçirme
- 13. Açısal vaat birden çok kez
- 14. Hazırlanan Bildirimi birden çok kez verimli kullanma
- 15. Parantez içinde birden çok deyimi kaydırma
- 16. Sphinx PDO birden çok değişken hatayı çalıştırmak
- 17. Kod bölme ile satıcıların birden çok kez yüklenmesini nasıl önleyebilirim
- 18. Neden tahmin girişini kullanarak birden çok kez aramalı?
- 19. Birden çok tabloyu kullanarak birden çok tablo kullanarak Tablolara katılma
- 20. Birden çok koşul kod yazıcısı
- 21. alert/FullCalendar olayını kullanarak bootsrap modelinde birden çok kez onaylama
- 22. Metin bulma (birden çok kez) ve vurgulama
- 23. Turbolinks birden çok kez Javascript yükler
- 24. Neden viewdidlayoutsubviews birden çok kez çağrı yapıyor?
- 25. jQuery tıklayın() burada, Öncelikle birden çok kez
- 26. Aynı karakterin birden çok kez yanması
- 27. SwitchPreferences birden çok kez onPreferenceChange() yöntemini çağırır
- 28. KnockoutJS özel bağlama ateşi birden çok kez
- 29. Birden çok projede birden çok TFS çalışma alanı var mı?
- 30. Birden çok kez maven kullanarak tek bir test gerçekleştirin
belki ilginç? kaydırılabilir imlecin mysql'de bulunmadığını belirtir. http://stackoverflow.com/a/19076778/3184785. –
Örnek kodunuz, birbiri ardına birden çok foreach bloğunuz olduğu durumu göstermediğinden başarısız olmayacaktır - bu yüzden arkadaşların kafası karışmıştır. Kod, tüm sonuç kümesinde ilk yinelemede durmuyor, başka bir şekilde, ikinci tam yinelemeyi deniyorsunuz. – Ray