2008-10-18 22 views
19
$query = "SELECT * FROM `table`"; 
$results = mysql_query($query, $connection); 

यदि 'तालिका' में कोई पंक्ति नहीं है। इसके लिए जांच करने का सबसे आसान तरीका क्या है?जांच कर रहा है कि mysql_query ने कुछ भी लौटाया है या नहीं

+2

मुझे लगता है कि यह PHP है? मैंने तदनुसार टैग बदल दिए हैं। –

+0

'अगर (! जारी करें ($ परिणाम)) {// कुछ भी वापस नहीं किया गया है}' का प्रयास करें। – carefulnow1

उत्तर

14

आप जाँच लें कि 0 पंक्तियों लौट रहे थे, या उपयोग करने के लिए इस तेजी से विकल्प mysql_num_rows($results) इस्तेमाल कर सकते हैं:

$query = "SELECT COUNT(*) AS total FROM table"; 
$results = mysql_query($query, $connection); 
$values = mysql_fetch_assoc($results); 
$num_rows = $values['total']; 
+2

यदि आप चाहते हैं * तालिका से डेटा प्राप्त करना चाहते हैं, लेकिन सिर्फ यह जानना चाहते हैं कि यह खाली है या नहीं, तो आप परिणाम पृष्ठ पर ऐसा कह सकते हैं, फिर अपनी सामान्य क्वेरी करें और mysql_num_rows का उपयोग करें। जो आप नहीं करना चाहते हैं वह है: पंक्तियों (उपर्युक्त का उपयोग करके) की गणना करें, फिर सामान्य क्वेरी करें यदि गिनती> 0. –

+2

हाँ, मैं इसके बारे में सोच नहीं रहा था क्योंकि मैं आमतौर पर "चयन COUNT (*) करता हूं "सामग्री के पृष्ठों की संख्या की गणना करने के लिए क्वेरी, फिर तालिका के कुछ पंक्तियों को चुनें, इस पर निर्भर करता है कि उपयोगकर्ता किस सामग्री पर है। –

+1

'mysql_query' और 'mysql_fetch_assoc' एक्सटेंशन को PHP 5.5.0 के रूप में बहिष्कृत किया गया है, और भविष्य में हटा दिया जाएगा। इसके बजाय, MySQLi या PDO_MySQL एक्सटेंशन का उपयोग किया जाना चाहिए। http://www.php.net/manual/en/mysqli-result.fetch-assoc.php –

-6

आप पाश परिणामों के माध्यम से आप एक प्रति है और जाँच लें कि कर सकते हैं।

$x = 1; 
$query = mysql_query("SELECT * FROM table"); 
while($row = mysql_fetch_assoc($query)) 
{ 
    $x++; 
} 
if($x == 1) 
{ 
    //No rows 
} 
+0

एक खाली स्ट्रिंग वाली एक पंक्ति उस कोड को तोड़ देगी। – Schwern

+0

नहीं, यह नहीं होगा। सरणी ("") == सच। यद्यपि यह जांचने के लिए अभी भी एक बहुत ही मूर्ख तरीका है। – nickf

+0

बहुत सीपीयू गहन। – TCB13

28

ऊपर जेरेमी रूटेन का उत्तर अच्छा है और जल्दी से निष्पादित करता है; दूसरी ओर, यह आपको केवल पंक्तियों की संख्या देता है और कुछ और नहीं (यदि आप परिणाम डेटा चाहते हैं, तो आपको डेटाबेस से फिर से पूछना होगा)। मैं क्या का उपयोग करें:

// only ask for the columns that interest you (SELECT * can slow down the query) 
$query = "SELECT some_column, some_other_column, yet_another_column FROM `table`"; 
$results = mysql_query($query, $connection); 
$numResults = mysql_num_rows($results); 
if ($numResults > 0) { 
    // there are some results, retrieve them normally (e.g. with mysql_fetch_assoc()) 
} else { 
    // no data from query, react accordingly 
} 
8

वैकल्पिक रूप से आप बस देख सकते हैं कि mysql_fetch_assoc का परिणाम गलत है।

$query = "SELECT * FROM `table`"; 
$results = mysql_query($query, $connection); 
$Row = mysql_fetch_assoc($results); 
if ($Row == false) 
{ 
    $Msg = 'Table is empty'; 
} 
+1

मेरी राय में सबसे अच्छा जवाब है जो करने की ज़रूरत है, यह जांचें कि क्वेरी का mysql_fetch_assoc कुछ ऐसा उत्पन्न करता है जो शून्य नहीं है –

0

एक बात मैं तथ्य यह है कि क्वेरी, सफल नहीं हो सकता है तो आप अगर $ परिणाम चर सेट किया गया है जांच करने की जरूरत है कि याद किया गया था देखा गया था। मैं yjerem द्वारा दिए गए उत्तर का उदाहरण उदाहरण के रूप में उपयोग करूंगा।

$query = "SELECT COUNT(*) AS total FROM table"; 
$results = mysql_query($query, $connection); 
if ($results) { // or use isset($results) 
$values = mysql_fetch_assoc($results); 
$num_rows = $values['total']; 
} 
संबंधित मुद्दे