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

Bind_result बनाम get_result का उपयोग कैसे करें इसका उदाहरण

मेरे लिए निर्णायक कारक यह है कि क्या मैं * . का उपयोग करके अपने क्वेरी कॉलम को कॉल करूं? ।

bind_result() का उपयोग करना इसके लिए बेहतर होगा:

// Use bind_result() with fetch()
$query1 = 'SELECT id, first_name, last_name, username FROM table WHERE id = ?';

get_result() का उपयोग करना इसके लिए बेहतर होगा:

// Use get_result() with fetch_assoc() 
$query2 = 'SELECT * FROM table WHERE id = ?';

उदाहरण 1 $query1 . के लिए bind_result() . का उपयोग करके

$query1 = 'SELECT id, first_name, last_name, username FROM table WHERE id = ?';
$id = 5;

if($stmt = $mysqli->prepare($query)){
   /*
        Binds variables to prepared statement

        i    corresponding variable has type integer
        d    corresponding variable has type double
        s    corresponding variable has type string
        b    corresponding variable is a blob and will be sent in packets
   */
   $stmt->bind_param('i',$id);

   /* execute query */
   $stmt->execute();

   /* Store the result (to get properties) */
   $stmt->store_result();

   /* Get the number of rows */
   $num_of_rows = $stmt->num_rows;

   /* Bind the result to variables */
   $stmt->bind_result($id, $first_name, $last_name, $username);

   while ($stmt->fetch()) {
        echo 'ID: '.$id.'<br>';
        echo 'First Name: '.$first_name.'<br>';
        echo 'Last Name: '.$last_name.'<br>';
        echo 'Username: '.$username.'<br><br>';
   }

   /* free results */
   $stmt->free_result();

   /* close statement */
   $stmt->close();
}

/* close connection */
$mysqli->close();

उदाहरण 2 $query2 . के लिए get_result() . का उपयोग करके

$query2 = 'SELECT * FROM table WHERE id = ?'; 
$id = 5;

if($stmt = $mysqli->prepare($query)){
   /*
        Binds variables to prepared statement

        i    corresponding variable has type integer
        d    corresponding variable has type double
        s    corresponding variable has type string
        b    corresponding variable is a blob and will be sent in packets
   */
   $stmt->bind_param('i',$id);

   /* execute query */
   $stmt->execute();

   /* Get the result */
   $result = $stmt->get_result();

   /* Get the number of rows */
   $num_of_rows = $result->num_rows;



   while ($row = $result->fetch_assoc()) {
        echo 'ID: '.$row['id'].'<br>';
        echo 'First Name: '.$row['first_name'].'<br>';
        echo 'Last Name: '.$row['last_name'].'<br>';
        echo 'Username: '.$row['username'].'<br><br>';
   }

   /* free results */
   $stmt->free_result();

   /* close statement */
   $stmt->close();
}

/* close connection */
$mysqli->close();

जैसा कि आप देख सकते हैं कि आप bind_result . का उपयोग नहीं कर सकते हैं * . के साथ . हालांकि, get_result दोनों के लिए काम करता है, लेकिन bind_result आसान है और $row['name'] . के साथ कुछ गड़बड़ी को दूर करता है ।

bind_result()

पेशेवर:

  • सरल
  • $row['name'] के साथ खिलवाड़ करने की जरूरत नहीं है
  • fetch() का उपयोग करता है

विपक्ष:

  • एसक्यूएल क्वेरी के साथ काम नहीं करता है जो * . का उपयोग करता है

get_result()

पेशेवर:

  • सभी SQL स्टेटमेंट के साथ काम करता है
  • fetch_assoc() का उपयोग करता है

विपक्ष:

  • सरणी चर के साथ गड़बड़ करना चाहिए $row[]
  • उतना साफ नहीं
  • को MySQL नेटिव ड्राइवर की आवश्यकता है (mysqlnd )


  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. चेतावनी:mysql_connect():[2002] ऐसी कोई फ़ाइल या निर्देशिका नहीं है (यूनिक्स के माध्यम से कनेक्ट करने का प्रयास कर रहा है:///tmp/mysql.sock) में

  3. MySQL निश्चित समस्याओं का निवारण कैसे करें

  4. MySQL कार्यक्षेत्र विकल्प - ClusterControl का पॉइंट-एंड-क्लिक GUI

  5. स्क्रैच से पायथन फ्लास्क और MySQL का उपयोग करके एक वेब ऐप बनाना:भाग 5