Bu PDOStatement getirme :: olmadığını kontrol etmek mümkündür () bir satır yineleme olmadan sonuç var?

4 Cevap php

Ben sonuçları kontrol etmek için gereken bir sayfa var ve ben bunu yapmak için geldi yoludur başarılı olur, ancak sonuçların ilk satırda dolaşır. Ben yineleme olmadan kontrol edebilir, ya da tekrar sorgu yürütme olmadan ilk satıra geri dönmek için bir yolu var mı?

Ben bu yapıyordu:

 $q = pdo::prepare($SQL);
 $q->execute(array(':foo'=> foo, 'bar'=>bar);
 if(!q->fetch){
     //no results;
 }else{
      //results;
 };

Bu talihsiz tarafı sonuçların ilk satırı atlama etkisi ile, ben ümit tam olarak ne hemen hemen yok.

Ben $ q-> () ikinci kez çalıştırmak çalıştıran başvurdu ettik. Bunu önlemek için bir yolu var mı?

4 Cevap

Sadece bir değişken haline getirme sonucunu koydu:

if($row = $q->fetch()) {
    // $row contains first fetched row
    echo $row['coloumn_name'];
}
else
    // no results

Eğer tembel olmak istiyorsanız, her zaman böyle bir şey olabilir:

$totalRows = count($resultSet->fetchAll());

Bununla birlikte, bu büyük sonuç kümeleri için etkili daha azdır.

Aksi halde, manuel page about rowCount() (özellikle örnek # 2), standart geçici çözüm gibi görünen için bkz. Bu sayfada bazı ilginç kullanıcı tarafından sağlanan yorumlar da vardır.

Bunun için SELECT FOUND_ROWS() yararlı bulacaksınız olabilir. Php.net sitesinde örneğe bakın http://www.php.net/manual/en/ref.pdo-mysql.php#77984

rowCount () mysql ile çalışmak için bilinen, bu yüzden taşınabilirliği bir endişe değil ise, bu kullanın.

aksi takdirde, örneğin, programın mantığı değiştirmek için deneyebilirsiniz

	$stmt->execute();

	$count = 0;
	foreach($stmt as $record) {
		// output...
		$count++;
	}

	if(!$count)
		echo "no results!";