2012-09-27 18 views
6

से सम्मिलित किया गया पंक्तियाँ मैं इस प्रश्न हैं:गणना कितने अंतिम एसक्यूएल क्वेरी

INSERT INTO db1.outbox (DestinationNumber, TextDecoded) 
SELECT User.CellPhone, '$SMSMessage' as TextDecoded 
FROM db2.User 
WHERE User.PurchaseDate BETWEEN 2012-01-01 AND 2012-01-31 

यह आउटबॉक्स 'तालिका में अनेक पंक्तियां प्रविष्टि करता है। लेकिन मुझे नहीं पता कि कितनी पंक्तियां डाली गईं। उस SQL ​​वाक्यविन्यास से पंक्तियों की संख्या कैसे डाली जाए? धन्यवाद।

अद्यतन मैं इस आदेश के परिणाम के रूप मिल गया '-1':

$insertedRows = mysql_query("SELECT ROW_COUNT()"); 
$rowInserted = mysql_fetch_array($insertedRows); 
$rowInserted = $rowInserted[0]; 
echo $rowInserted; 

लेकिन मैं 27 पंक्तियों मेरी मेज पर डाला देखते हैं देखते हैं। मैंने गलत क्या किया?

+0

कारण "का चयन करें ROW_COUNT()" आप के लिए काम नहीं करता है टी है जब PHP PHP आपको नियंत्रण देता है तब तक आपकी क्वेरी अब तक की सबसे हालिया क्वेरी नहीं है। MySQL रिटर्न -1 क्योंकि PHP ने पहले से ही "SELECT ROW_COUNT()" और "SELECT LAST_INSERT_ID()" का आह्वान किया है। एक सूचना समारोह का चयन करने के बाद, "ROW_COUNT()" का परिणाम -1 है। यही कारण है कि आपको विशेष PHP चर '' 'mysql_affected_rows' '' का उपयोग करने की आवश्यकता है, जिसने आपकी क्वेरी निष्पादित करने के बाद "SELECT ROW_COUNT()" से मान को कैश किया था। –

उत्तर

9

इसे अपने अंतिम बयान में डालें;

SELECT ROW_COUNT(); 

UPDATE 1

कैसे का उपयोग कर mysql_affected_rows, उदाहरण के बारे में

<?php 

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
    if (!$link) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('mydb'); 

    /* this should return the correct numbers of deleted records */ 
    mysql_query('you SQL QUERY HERE'); 
    printf("Records deleted: %d\n", mysql_affected_rows()); 

?> 
+0

मैंने अभी ROW_COUNT() फ़ंक्शन का उपयोग करने का प्रयास किया है, लेकिन मुझे परिणाम के रूप में -1 देता है। वास्तव में, मेरे पास 27 पंक्तियां डाली गई हैं। उपरोक्त इस पोस्ट का मेरा अपडेट देखें। –

+1

@RobertHanson ओह, मैं देखता हूं कि आप 'PHP' का उपयोग कर रहे हैं, इस PHP मैनुअल पर देखे गए 'mysql_affected_rows()' का उपयोग करने का प्रयास करें, http://php.net/manual/en/function.mysql-affected-rows.php –

+0

@RobertHanson मेरा अद्यतन उत्तर देखें। –

1

यहाँ कुछ संभावनाएं हैं:

» आप एक AUTO_INCREMENT स्तंभ है, तो आप प्राप्त कर सके पहले पंक्ति संख्या और डालने के बाद

» SELECT ROW_COUNT() रिटर्न पंक्तियों की संख्या, बदल नष्ट कर दिया, या पिछले बयान से डाला है, तो यह एक UPDATE था, DELETE, या INSERT (doc)

» आप mysqli_affected_rows (mysql_ के बाद से कार्यों का उपयोग कर सकते हैं पदावनत किया जा रहा है) पिछले एक MySQL आपरेशन में प्रभावित पंक्तियों की संख्या प्राप्त करने के लिए (doc)

$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

if (!$link) { 
    printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error()); 
    exit(); 
} 

/* Insert rows */ 
mysqli_query($link, "INSERT INTO myTable VALUES (1)"); 
printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link)); 
संबंधित मुद्दे