अध्याय 17: उन्नत MySQLi फीचर्स (Advanced MySQLi Features)

अध्याय 17: उन्नत MySQLi फीचर्स (Advanced MySQLi Features)

इस अध्याय में, हम MySQLi के उन्नत फीचर्स के बारे में चर्चा करेंगे। ये फीचर्स आपको अधिक जटिल और परिष्कृत डेटाबेस ऑपरेशन्स को संभालने में मदद करेंगे। हम डेटा फेच मोड्स, स्टोरड प्रोसिड्यर्स, बैच प्रोसेसिंग, और अन्य महत्वपूर्ण उन्नत तकनीकों पर गौर करेंगे। इन फीचर्स का उपयोग करके, आप अपने डेटाबेस ऑपरेशन्स को अधिक कुशल और प्रभावी बना सकते हैं।

डेटा फेच मोड्स (Data Fetch Modes)

MySQLi विभिन्न फेच मोड्स प्रदान करता है, जो आपको डेटाबेस से डेटा प्राप्त करने के तरीके को नियंत्रित करने की अनुमति देते हैं।

एसोसिएटिव फेच मोड (Associative Fetch Mode)

<?php
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row['name'] . " - Email: " . $row['email'] . "<br>";
}
?>

न्यूमेरिक फेच मोड (Numeric Fetch Mode)

<?php
$result = $stmt->get_result();
while ($row = $result->fetch_row()) {
    echo "Name: " . $row[0] . " - Email: " . $row[1] . "<br>";
}
?>

ऑब्जेक्ट फेच मोड (Object Fetch Mode)

<?php
$result = $stmt->get_result();
while ($row = $result->fetch_object()) {
    echo "Name: " . $row->name . " - Email: " . $row->email . "<br>";
}
?>

स्टोरड प्रोसिड्यर्स का उपयोग (Using Stored Procedures)

स्टोरड प्रोसिड्यर बनाना (Creating a Stored Procedure)

DELIMITER //
CREATE PROCEDURE GetUserDetails(IN userId INT)
BEGIN
    SELECT name, email FROM users WHERE id = userId;
END //
DELIMITER ;

स्टोरड प्रोसिड्यर कॉल करना (Calling a Stored Procedure)

<?php
$stmt = $conn->prepare("CALL GetUserDetails(?)");
$stmt->bind_param("i", $userId);
$userId = 1;
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo "Name: " . $row['name'] . " - Email: " . $row['email'] . "<br>";
}
?>

मल्टी-क्वेरीज़ (Multi-queries)

मल्टी-क्वेरीज़ का उपयोग (Using Multi-queries)

<?php
$sql = "SELECT name FROM users WHERE id = 1;";
$sql .= "SELECT email FROM users WHERE id = 2;";
if ($conn->multi_query($sql)) {
    do {
        if ($result = $conn->store_result()) {
            while ($row = $result->fetch_row()) {
                echo $row[0] . "<br>";
            }
            $result->free();
        }
    } while ($conn->next_result());
}
?>

बैच प्रोसेसिंग (Batch Processing)

बैच प्रोसेसिंग का उदाहरण (Example of Batch Processing)

<?php
$sql = "INSERT INTO users (name, email) VALUES ('User1', 'user1@example.com');";
$sql .= "INSERT INTO users (name, email) VALUES ('User2', 'user2@example.com');";
if ($conn->multi_query($sql)) {
    echo "बैच प्रोसेसिंग सफलतापूर्वक पूरी हो गई।";
} else {
    echo "त्रुटि: " . $conn->error;
}
?>

कस्टम एरर हैंडलिंग (Custom Error Handling)

कस्टम एरर हैंडलिंग का उदाहरण (Example of Custom Error Handling)

<?php
function customErrorHandler($errno, $errstr, $errfile, $errline) {
    echo "त्रुटि: [$errno] $errstr - $errfile:$errline";
    error_log("त्रुटि: [$errno] $errstr - $errfile:$errline", 3, "/var/log/php_errors.log");
}

set_error_handler("customErrorHandler");

// एक एरर उत्पन्न करना
echo $undefinedVariable;
?>

एसिंक्रोनस क्वेरीज़ (Asynchronous Queries)

एसिंक्रोनस क्वेरीज़ का उपयोग (Using Asynchronous Queries)

<?php
$conn->query("SELECT SLEEP(5)", MYSQLI_ASYNC);
$links = $errors = $reject = array();
$links[] = $conn;
mysqli_poll($links, $errors, $reject, 1);
foreach ($links as $link) {
    if ($result = $link->reap_async_query()) {
        echo "क्वेरी पूरी हो गई।";
    }
}
?>

इस अध्याय में, हमने MySQLi के उन्नत फीचर्स जैसे डेटा फेच मोड्स, स्टोरड प्रोसिड्यर्स, मल्टी-क्वेरीज़, बैच प्रोसेसिंग, कस्टम एरर हैंडलिंग, और एसिंक्रोनस क्वेरीज़ पर चर्चा की। इन तकनीकों का उपयोग करके, आप अपने डेटाबेस ऑपरेशन्स को अधिक कुशल और सुरक्षित बना सकते हैं।



Index