2009-12-20 12 views
5

इम मैं यह कैसे कोड होता है, संभाल करने के लिए कि यह कैसे कोई परिणाम नहीं दिए जाते हैं पता लगाने की कोशिश?

जबकि ($ पंक्ति = mysql_fetch_array ($ mysql_fetch_array परिणाम))

तो जैसे अगर वहाँ एक परिणाम: उन्हें प्रिंट

बाकी

:। एक लिंक

उत्तर

6

आप mysql_num_rows() उपयोग कर सकते हैं आपको बताना है कि कितने परिणाम मिलने पर दिखाने का उपयोग करना है कि एक साधारण if-statement साथ, और आप निर्धारित कर सकते हैं कि कौन सी कार्रवाई करना है।

if (mysql_num_rows($result) > 0) { 
    // do while loop 
} else { 
    // show link 
} 
+0

बस सोच - अगर यह विफल रहता है या कोई परिणाम नहीं हमेशा कि समारोह से उत्पन्न मूल्य falsy हो जाएगा? अगर ऐसा होता है तो 0 से अधिक को छोड़ सकता है (मेरे पास हमेशा होता है, लेकिन संभावित वापसी मूल्यों के बारे में गहराई में कभी भी बहुत कुछ नहीं सोचा है) +1 – alex

+1

"वापसी मान: सफलता पर सेट की गई पंक्तियों की संख्या या असफलता पर गलत।" ऐसा लगता है कि यदि वास्तव में शून्य परिणाम हैं, तो यह '0' वापस आ सकता है, लेकिन फ़ंक्शन विफल होने पर 'झूठा' हो सकता है। – Sampson

+0

उत्कृष्ट। पूरी तरह से काम किया, मुझे कैसे मिला था उससे बेहतर। – jrutter

0

मैं यह पता लगा हो सकता है:

if (!($row = mysql_fetch_array($descResult))) 
    { 
    echo "<tr><td>Add Link</td></tr>"; 
} 
2

दूसरों mysql_num_rows() उपयोग करने का सुझाव लेकिन आप जानते हैं कि समारोह से काम करता है कि केवल यदि आप एक बफ़र क्वेरी का उपयोग किया जाना चाहिए। यदि आप mysql_unbuffered_query() का उपयोग कर क्वेरी करते हैं, तो परिणाम में पंक्तियों की संख्या उपलब्ध नहीं है।

मैं एक साधारण झंडा चर का प्रयोग करेंगे:

$found_row = false; 

while ($row = mysql_fetch_array($result)) { 
    $found_row = true; 
    . . . 
} 

if ($found_row == false) { 
    // show link 
} 

यह बार-बार सच को $found_row स्थापित करने के लिए निरर्थक लग सकता है, लेकिन एक चर करने के लिए एक शाब्दिक मान निर्दिष्ट किसी भी भाषा में एक तुच्छ खर्च होना चाहिए। निश्चित रूप से यह एसक्यूएल क्वेरी परिणाम लाने और प्रसंस्करण की तुलना में छोटा है।

+0

भाषाओं में इस समस्या से बचने के लिए एक निर्माण होना चाहिए, क्योंकि यह बहुत आम है। कुछ जबकि '($ cond) {$ action} और {$ code}'। – mpen

+0

@ मार्क: पायथन में थोड़ी देर/अन्यथा निर्माण है। –

0

यह mysql_num_rows() या एक अतिरिक्त (झंडा) अलग-अलग

if (false===($row=mysql_fetch_array($result, MYSQL_ASSOC))) { 
    echo 'no rows in result set'; 
} 
else { 
    do { 
    echo $row['X']; 
    } while (false===($row=mysql_fetch_array($result, MYSQL_ASSOC))); 
} 

बिना किया जा सकता लेकिन यह वास्तविक लाने आदेश (अगर-बयान में एक और जब-खंड में एक) डुप्लिकेट। बिना तुच्छ mysql_num_rows

1

उपयोग भी कम वाक्य रचना प्रोसेसर समय बचाने के लिए:

if($result) { 
    // return db results 
} else { 
    // no result 
} 
संबंधित मुद्दे