Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पंक्तियों की संख्या प्राप्त नहीं कर सकता और MySQLi तैयार कथन का उपयोग करते समय प्राप्त कर सकता है

अगर आप mysqli_stmt::$num_rows . का इस्तेमाल करना चाहते हैं (अर्थात, तैयार किए गए कथन पर पंक्तियों की संख्या की जाँच करें), आपको $stmt->store_result() का उपयोग करने की आवश्यकता है पंक्तियों की संख्या की जाँच करने में सक्षम होने से पहले तैयार कथन को क्रियान्वित करने के बाद। इसका मतलब है कि कितनी पंक्तियों को वापस किया गया था, यह जांचने से पहले परिणाम स्मृति में संग्रहीत किया जाता है।

$stmt = $conn->prepare($sql);
$stmt->bind_param('ss',$log_username,$log_username);
$stmt->execute();
$stmt->store_result(); // Need to store the result into memory first
if ($stmt->num_rows) {
    // ...

हालांकि, यदि आप mysqli_result::$num_rows . का उपयोग करना चाहते हैं (MySQLi-result पर आप स्टेटमेंट रिजल्ट से कन्वर्ट करते हैं), आपको $result = $stmt->get_result(); करने के बाद ऐसा करना होगा। , और $result->num_rows; . का उपयोग करें , जैसा कि नीचे दिखाया गया है।

$stmt = $conn->prepare($sql);
$stmt->bind_param('ss',$log_username,$log_username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows) {
    while ($row = $result->fetch_assoc()) {
    // ....

अंत में, उन दोनों को एक ही काम करना चाहिए - मूल तैयार क्वेरी द्वारा लौटाई गई कई पंक्तियां प्रदान करें।

नोट
यह नोट करना महत्वपूर्ण है कि आप store_result() का उपयोग नहीं कर सकते हैं और get_result() इसी बयान पर। जिसका अर्थ है कि पहले उदाहरण में, आप एक mysqli-result ऑब्जेक्ट में कनवर्ट नहीं कर सकते (get_result() का उपयोग करके) , जो आपको मानक fetch_assoc() . का उपयोग करने की अनुमति देता है तरीका)। store_result() . के रूप में परिणाम को स्मृति में संग्रहीत करता है, get_result() . के लिए कुछ भी नहीं है परिवर्तित करने के लिए, और इसके विपरीत।

इसका मतलब है कि अगर आप store_result() . का इस्तेमाल करते हैं , आपको स्टेटमेंट-फ़ेच के माध्यम से लाने की आवश्यकता है, mysqli_stmt::fetch() और परिणामों को बाइंड करें हालांकि mysqli_stmt::bind_result() . अगर आप get_result() का इस्तेमाल करते हैं , आपको परिणामी MySQLi-result ऑब्जेक्ट पर पंक्तियों की संख्या की जांच करनी चाहिए (जैसा कि दूसरे उदाहरण में दिखाया गया है)।

इसलिए आपको अपना कोड इस तरह बनाना चाहिए कि आपको उनमें से केवल एक का उपयोग करने की आवश्यकता हो।

कहा जा रहा है, affected_rows . का उपयोग करते हुए जैसा कि टिप्पणियों में सुझाया गया है, नौकरी के लिए सही उपकरण नहीं है - mysqli_stmt::$affected_rows पर मैनुअल के अनुसार (नियमित क्वेरी के लिए भी यही बात लागू होती है, mysqli::$affected_rows ):




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ब्लॉब का उपयोग करके किसी फ़ाइल को mysql डेटाबेस में कैसे स्टोर करें?

  2. PHP mySQL - क्या आप एक संबंधित सरणी को एक संख्या अनुक्रमणिका के साथ वापस कर सकते हैं?

  3. MySQL में माइनस ऑपरेटर?

  4. केकफ़्पी 3 में गतिशील रूप से डेटाबेस कनेक्शन बदलें

  5. SUM . द्वारा MySQL समूह