2016-04-04 8 views
0

Bu sorunun çok fazla topluluğa göre sorulduğundan eminim, ancak iyi bir cevap bulamadım. Benim sorgu bir sonuç döndürdü olup olmadığınıSorgulama sonuçlarının herhangi bir sonuca neden olup olmadığı nasıl kontrol edilir PDO

$keyword = '%'.strtoupper($_POST['keyword']).'%'; 
$limitMaterial = 'AS-%'; 
$findMaterial = $oracle->prepare('SELECT inventory_item_id, segment1, description, inventory_item_status_code FROM mtl_system_items_b WHERE segment1 LIKE ? AND (segment1 LIKE ? OR description LIKE ?)'); 
$findMaterial->bindParam(1, $limitMaterial, PDO::PARAM_STR); 
$findMaterial->bindParam(2, $keyword, PDO::PARAM_STR); 
$findMaterial->bindParam(3, $keyword, PDO::PARAM_STR); 
$findMaterial->execute(); 
$checkRow = $findMaterial->fetch(PDO::FETCH_ASSOC); 

$boldKeyword = '<font color="red"><b>' . $keyword . '</b></font>'; 

if($checkRow !== false){ 
    var_dump($checkRow); // this is for testing only 
    foreach($findMaterial as $dataMaterial){ 
     var_dump($dataMaterial); // this is for testing only 
     $dataMaterial = array_change_key_case($dataMaterial,CASE_LOWER); 
     $code = str_ireplace($keyword,$boldKeyword,$dataMaterial['segment1']); 
     $desc = str_ireplace($keyword,$boldKeyword,$dataMaterial['description']); 
     if(isset($_POST['idf'])){ 
      $idf = $_POST['idf']; 
      echo '<div class="show" align="left" onclick="select('.$idf.',this); return false;"><span>'.$code.'</span><span style="visibility: hidden; font-size:1px;" class="find_material_'.$idf.'">'.$dataMaterial['segment1'].'</span></br>'.$desc.'</div>'; 
     } else { 
      echo '<div class="show" align="left"><span>'.$code.'</span><span style="visibility: hidden; font-size:1px;" class="basic_code">'.$dataMaterial['segment1'].'</span></br>'.$desc.'</div>'; 
     } 
    } 
} else { 
    echo '<div class="show" align="left">Part Code Not Found</div>'; 
} 

$findMaterial = null; 

Ne sormak istediğim, nasıl kontrol edebilirsiniz

ben bu kodu var?. Benim şu anki kod çalışıyor, ama bu hat bir sorunu vardır:

$checkRow = $findMaterial->fetch(PDO::FETCH_ASSOC); 

sonuçlarından 1 satır atın, bu yüzden foreach döngüsünde 1 satır eksik. FetchColumn() (aynı sorunu var) ve rowCount() (SELECT ifadesi için 0 döndürdüğü) çalıştı.

Eğer mümkünse, "1 SELECT COUNT (1) FROM [table]" komutunu kullanmaktan kaçınmak istiyorum, aksi takdirde sadece 1 satır için foreach döngüsünde olup olmadığını kontrol edin.

Herhangi bir yardım için teşekkür ederiz. Eğer

+1

vay olarak SELECT COUNT(1) FROM.. bu kullanarak dışarı ile COUNT() kullanarak, i downvote bekliyoruz, ancak bu hala beni şaşırttı olabilir ederiz. @downvoter, bir çözüm biliyorsanız biliyor musunuz? –

cevap

0

Sen sorgu dönüş sonucunu kontrol ya da değil

$checkRow = $findMaterial->fetchAll(); 
if (count($checkRow) > 0) { 
    foreach ($checkRow as $dataMaterial) { 
     // your code 
    } 
} else { 
    echo "NO RESULT FOUND"; 
} 
+0

Ancak sorun, $ checkRow satırının sonuçtan 1 satır almasıyla, foreach'ın alınan satırı erişememesidir. –

+0

değiştirmek foreach ($ findMaterial $ $ dataMaterial olarak) {'to foreach ($ checkRow $ $ dataMaterial) {' – Saty

+0

ah üzgünüm, görmedim, hemen deneyeceğim. teşekkür ederim. –

İlgili konular