अगर आप 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
):
- PHP.net on
mysqli_stmt::store_result()
- PHP.net on
mysqli_stmt::get_result()
- PHP.net
mysqli_stmt::$num_rows