2012-09-14 20 views
5

का उपयोग करके डीबी क्वेरी लौटाए गए परिणामों की जांच कैसे करूं? मैं कैसे जांचूं कि PHP में पीडीओ का उपयोग करके मेरा परिणाम सेट खाली है या नहीं?मैं PHP के पीडीओ

$SQL = "SELECT ......... ORDER BY lightboxName ASC;"; 
$STH = $DBH->prepare($SQL); 
$STH->bindParam(':member_id', $member_id); 
$STH->execute(); 
$STH->setFetchMode(PDO::FETCH_ASSOC); 

while($row = $STH->fetch()) { 
    $lightbox_name = $row['lightboxName']; 
    $lightbox_id = $row['lightboxID']; 
    echo '<option value="'.$lightbox_id.'">'.$lightbox_name.'</option>'; 
} 

मैं इस तरह यह करने के लिए इस्तेमाल किया:

$result = mysql_query("SELECT ...... ORDER BY lightboxName ASC;"); 
if(!$result) { echo 'No results found!'; } 

लेकिन अभी पीडीओ और तैयार बयान और $STH के खिलाफ जाँच का उपयोग कर अपेक्षा के अनुरूप काम नहीं लगता है शुरू कर दिया है - यह हमेशा महत्व है!

उत्तर

8

मैं rowCount() का उपयोग करने की कोशिश करेंगे:

$rows_found = $STH->rowCount(); 

, लेकिन पुस्तिका के अनुसार:, कुछ डेटाबेसों मई

तो पिछले SQL विवरण जुड़े PDOStatement द्वारा निष्पादित था एक SELECT कथन उस कथन द्वारा लौटाई गई पंक्तियों की संख्या लौटाएं। हालांकि, इस व्यवहार को सभी डेटाबेस के लिए की गारंटी नहीं है और पोर्टेबल एप्लिकेशन के लिए भरोसा नहीं किया जाना चाहिए।

यदि यह आपके लिए काम नहीं करता है, तो आप मैन्युअल में उल्लिखित अन्य विधि का उपयोग कर सकते हैं। और अंत में कुछ घंटों के बाद

आप निश्चित रूप से भी अपने while पाश से पहले एक चर सेट कर सकते हैं, अपने पाश में इसे बदलने और पाश के बाद मान की जाँच ...

+0

बिल्कुल सही। इरादे के रूप में काम करता है।मैं बस इसके बारे में पढ़ रहा था और ऐसा करने का दूसरा तरीका कॉलमकाउंट() का उपयोग करना है। क्या आपको लगता है कि rowCount() और columnCount() के बीच एक प्रदर्शन अंतर है? – ShadowStorm

+0

@ShadowStorm 'columnCount()' सुपर-फास्ट होना चाहिए, लेकिन फिर, 'rowCount() 'साथ ही यह उपलब्ध है। आपको यह सुनिश्चित करने के लिए परीक्षण करना होगा। – jeroen

+1

मैंने पाया है कि 'कॉलमकाउंट()' सबसे अच्छा काम करता है क्योंकि यह मेरे सभी परीक्षण मामलों के तहत '0' वापस कर देगा। 'rowCount()' अक्सर पंक्तियों को संशोधित करता है और मेरे तर्क को फेंक देता है। – Ben

1

बस चर के बारे में जानकारी डंप करें।

var_dump($STH) 

संपादित

मैं सिर्फ सवाल मिला है। इसके लिए rowCount() फ़ंक्शन है। पंक्ति गणना के लिए बस $STH->rowCount(); का उपयोग करें और इसकी तुलना करें।

+2

यह मेरे प्रश्न का उत्तर नहीं है! मैं अपने चर को डंप नहीं करना चाहता। मैं जांचना चाहता हूं कि डेटाबेस क्वेरी ने परिणाम लौटाए हैं! – ShadowStorm

+0

कुछ $ वापसी की तरह कुछ करें, और फिर print_r() –

+0

@ mk_89: मेरे पास $ परिणाम चर नहीं है, मेरे पास $ STH चर है और इसमें हमेशा डेटा होता है चाहे उसका परिणाम सेट हो या नहीं। – ShadowStorm

0

यहाँ ठीक कोड यह काम करता है चारों ओर देखने और कुछ उत्तरों से मिलान करने का मिश्रण यहां एक ऐसा है जो वास्तव में आपके चयन कथन पर एक गिनती वापस कर देगा। एसक्यूएल स्पष्ट विवरण है $ उपयोगकर्ता नाम 1 उपयोगकर्ता नाम के लिए टेक्स्ट बॉक्स का पोस्ट है। $ password1 उपयोगकर्ता नाम सेटअप के समान है। इसके अलावा आपके पास यह सब कुछ होना चाहिए जो आपको इसे बनाने के लिए आवश्यक है, बस मेरे स्थान पर अपने चर को प्रतिस्थापित करें। मुझे आशा है कि यह कुछ लोगों को बचाएगा क्योंकि मैंने थोड़ी देर की खोज की थी जो मैं यहां चाहता था। यह समाधान तब होता है जब आपके पास एक चुनिंदा कथन होता है और आप इसे वापस करने के आधार पर जारी रखने या बंद करने में सक्षम होना चाहते हैं।

SQL = 'SELECT * from Users WHERE Username = :Username AND Password = :Password'; 
STH = $conn->prepare($SQL); 
STH->bindParam(':Username', $username1); 
STH->bindParam(':Password', $password1); 
STH->execute(); 
STH->setFetchMode(PDO::FETCH_ASSOC); 


row_count = $STH->rowCount(); 
संबंधित मुद्दे