अध्याय 15: PHP और डेटाबेस कनेक्शन – भाग 1 (PHP and Database Connection – Part 1)

अध्याय 15: PHP और डेटाबेस कनेक्शन – भाग 1 (PHP and Database Connection – Part 1)

इस अध्याय में, हम PHP और MySQLi के बीच कनेक्शन स्थापित करने के बारे में जानेंगे। MySQLi (MySQL Improved) PHP में MySQL डेटाबेस के साथ इंटरेक्ट करने का एक उन्नत तरीका है। यह अध्याय आपको MySQLi का परिचय, डेटाबेस कनेक्शन स्थापित करने, त्रुटि हैंडलिंग, डेटा जोड़ने और पढ़ने के विभिन्न तरीकों से परिचित कराएगा। इस ज्ञान के माध्यम से, आप अपने वेब एप्लिकेशन्स को अधिक डेटा-चालित और इंटरएक्टिव बना सकेंगे।

MySQLi का परिचय (Introduction to MySQLi)

MySQLi (MySQL Improved) एक PHP एक्सटेंशन है जो MySQL डेटाबेस के साथ इंटरैक्ट करने के लिए उपयोग किया जाता है। यह MySQL के पुराने MySQL एक्सटेंशन का उन्नत संस्करण है और इसमें कई नई सुविधाएं और सुधार शामिल हैं। MySQLi का उपयोग करके आप अधिक सुरक्षित, लचीला, और कुशल डेटाबेस एप्लिकेशन बना सकते हैं।

MySQLi की विशेषताएँ (Features of MySQLi)

  1. बाइंड पैरामीटर्स (Bind Parameters): MySQLi प्रिपेयर स्टेटमेंट्स और बाइंड पैरामीटर्स का समर्थन करता है, जिससे SQL इंजेक्शन के हमलों से बचाव में मदद मिलती है।
  2. मल्टी-क्वेरी सपोर्ट (Multi-query Support): MySQLi मल्टीपल क्वेरीज़ को एक साथ निष्पादित करने की क्षमता प्रदान करता है।
  3. प्रदर्शन (Performance): MySQLi बेहतर प्रदर्शन के लिए तैयार किया गया है और पुराने MySQL एक्सटेंशन की तुलना में तेज़ है।
  4. ऑब्जेक्ट ओरिएंटेड और प्रोसीजरल API (Object-oriented and Procedural API): MySQLi ऑब्जेक्ट ओरिएंटेड और प्रोसीजरल दोनों शैलियों का समर्थन करता है, जिससे डेवलपर्स को अधिक लचीलापन मिलता है।
  5. ट्रांजैक्शन्स (Transactions): MySQLi ट्रांजैक्शन्स को सपोर्ट करता है, जिससे डेटाबेस ऑपरेशन्स की एटॉमिकिटी सुनिश्चित होती है।

MySQLi का उपयोग क्यों करें? (Why Use MySQLi?)

  1. सुरक्षा (Security): MySQLi प्रिपेयर स्टेटमेंट्स और बाइंड पैरामीटर्स के माध्यम से SQL इंजेक्शन हमलों से बचाता है।
  2. लचीलापन (Flexibility): MySQLi ऑब्जेक्ट ओरिएंटेड और प्रोसीजरल दोनों शैलियों का समर्थन करता है, जिससे आप अपनी पसंद की शैली में कोड लिख सकते हैं।
  3. उन्नत सुविधाएँ (Advanced Features): MySQLi में मल्टी-क्वेरी सपोर्ट, ट्रांजैक्शन्स, और अन्य उन्नत सुविधाएं शामिल हैं जो इसे अधिक शक्तिशाली और उपयोगी बनाती हैं।
  4. भविष्य-प्रूफिंग (Future-proofing): MySQLi, MySQL डेटाबेस के नए वर्शन और सुविधाओं के साथ संगत है, जिससे यह एक स्थायी समाधान है।

MySQLi के साथ प्रारंभ करना (Getting Started with MySQLi)

MySQLi का उपयोग शुरू करने के लिए, आपको PHP के साथ MySQLi एक्सटेंशन को सक्षम करना होगा। यह आमतौर पर अधिकांश PHP इंस्टॉलेशन के साथ डिफ़ॉल्ट रूप से सक्षम होता है। आप PHP इंफो पेज की जाँच करके यह सुनिश्चित कर सकते हैं कि MySQLi सक्षम है:

<?php
phpinfo();
?>

यदि MySQLi सक्षम है, तो आप PHP स्क्रिप्ट में MySQLi फंक्शन्स और कक्षाओं का उपयोग करना शुरू कर सकते हैं।

डेटाबेस कनेक्शन स्थापित करना (Establishing a Database Connection)

डेटाबेस के साथ इंटरेक्ट करने के लिए, सबसे पहला कदम डेटाबेस कनेक्शन स्थापित करना है। MySQLi का उपयोग करके MySQL डेटाबेस के साथ कनेक्शन स्थापित करना सरल और सीधा है। इस सेक्शन में, हम डेटाबेस कनेक्शन स्थापित करने के लिए आवश्यक कदम और कोड उदाहरणों पर चर्चा करेंगे।

MySQLi का उपयोग करके डेटाबेस कनेक्शन स्थापित करना (Establishing a Database Connection Using MySQLi)

डेटाबेस कनेक्शन स्थापित करने के लिए, आपको डेटाबेस सर्वर का नाम, उपयोगकर्ता नाम, पासवर्ड, और डेटाबेस का नाम पता होना चाहिए। MySQLi का उपयोग करके डेटाबेस कनेक्शन स्थापित करने के लिए निम्नलिखित कोड का उपयोग किया जा सकता है:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    die("कनेक्शन विफल: " . $conn->connect_error);
}
echo "कनेक्शन सफल रहा!";
?>

इस उदाहरण में:

  • $servername: डेटाबेस सर्वर का नाम (अक्सर ‘localhost’)।
  • $username: डेटाबेस उपयोगकर्ता का नाम।
  • $password: डेटाबेस उपयोगकर्ता का पासवर्ड।
  • $dbname: डेटाबेस का नाम जिसे आप उपयोग करना चाहते हैं।

कनेक्शन एरर हैंडलिंग (Connection Error Handling)

डेटाबेस कनेक्शन स्थापित करते समय, एरर हैंडलिंग महत्वपूर्ण है ताकि कनेक्शन विफल होने पर उपयुक्त कार्रवाई की जा सके। ऊपर दिए गए उदाहरण में, $conn->connect_error का उपयोग करके कनेक्शन एरर की जाँच की जाती है। यदि कनेक्शन विफल रहता है, तो die() फंक्शन के माध्यम से एक एरर संदेश प्रदर्शित किया जाता है।

कनेक्शन बंद करना (Closing the Connection)

जब आपका काम पूरा हो जाता है, तो डेटाबेस कनेक्शन को बंद करना महत्वपूर्ण है ताकि सर्वर रिसोर्सेज मुक्त हो सकें। कनेक्शन बंद करने के लिए close() फंक्शन का उपयोग किया जाता है।

<?php
// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    die("कनेक्शन विफल: " . $conn->connect_error);
}
echo "कनेक्शन सफल रहा!";

// कनेक्शन बंद करना
$conn->close();
?>

ऑब्जेक्ट-ओरिएंटेड और प्रोसीजरल स्टाइल (Object-oriented and Procedural Style)

MySQLi में आप कनेक्शन स्थापित करने के लिए ऑब्जेक्ट-ओरिएंटेड स्टाइल या प्रोसीजरल स्टाइल दोनों का उपयोग कर सकते हैं। ऊपर दिए गए उदाहरण ऑब्जेक्ट-ओरिएंटेड स्टाइल का उपयोग करते हैं। प्रोसीजरल स्टाइल में कनेक्शन स्थापित करने का तरीका निम्नलिखित है:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = mysqli_connect($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if (!$conn) {
    die("कनेक्शन विफल: " . mysqli_connect_error());
}
echo "कनेक्शन सफल रहा!";

// कनेक्शन बंद करना
mysqli_close($conn);
?>

इस सेक्शन में, हमने MySQLi का उपयोग करके डेटाबेस कनेक्शन स्थापित करने के तरीके के बारे में चर्चा की। अगले सेक्शन में, हम डेटाबेस कनेक्शन के दौरान त्रुटियों को कैसे संभालें, यह जानेंगे।

डेटाबेस कनेक्शन एरर हैंडलिंग (Handling Database Connection Errors)

डेटाबेस कनेक्शन स्थापित करते समय, एरर हैंडलिंग महत्वपूर्ण है ताकि कनेक्शन विफल होने पर उपयुक्त कार्रवाई की जा सके। MySQLi का उपयोग करके डेटाबेस कनेक्शन एरर हैंडलिंग के लिए निम्नलिखित कदम उठाए जा सकते हैं:

1. कनेक्शन एरर की जाँच (Checking Connection Errors)

डेटाबेस कनेक्शन स्थापित करते समय, MySQLi की connect_error प्रॉपर्टी का उपयोग करके कनेक्शन एरर की जाँच की जा सकती है। यदि कनेक्शन विफल रहता है, तो connect_error एक एरर संदेश प्रदान करता है।

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    die("कनेक्शन विफल: " . $conn->connect_error);
}
echo "कनेक्शन सफल रहा!";
?>

2. कस्टम एरर संदेश (Custom Error Messages)

आप कस्टम एरर संदेश भी प्रदर्शित कर सकते हैं ताकि उपयोगकर्ता को अधिक समझ में आने वाला संदेश मिल सके। यह विशेष रूप से उपयोगी होता है जब आप विकास और उत्पादन (development and production) वातावरण में त्रुटियों को प्रबंधित कर रहे होते हैं।

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    die("कनेक्शन विफल: कृपया सुनिश्चित करें कि सर्वर चल रहा है और कनेक्शन विवरण सही हैं।");
}
echo "कनेक्शन सफल रहा!";
?>

3. त्रुटियों को लॉग करना (Logging Errors)

एरर लॉगिंग का उपयोग करके आप कनेक्शन त्रुटियों को एक फाइल में स्टोर कर सकते हैं। यह डिबगिंग और समस्या निवारण (troubleshooting) के लिए बहुत उपयोगी होता है।

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    error_log("कनेक्शन विफल: " . $conn->connect_error);
    die("कनेक्शन विफल: कृपया बाद में पुनः प्रयास करें।");
}
echo "कनेक्शन सफल रहा!";
?>

4. ट्राई-कैच ब्लॉक का उपयोग (Using Try-Catch Blocks)

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

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

try {
    // कनेक्शन स्थापित करना
    $conn = new mysqli($servername, $username, $password, $dbname);

    // कनेक्शन की जाँच करना
    if ($conn->connect_error) {
        throw new Exception("कनेक्शन विफल: " . $conn->connect_error);
    }
    echo "कनेक्शन सफल रहा!";
} catch (Exception $e) {
    error_log($e->getMessage());
    die("कनेक्शन विफल: कृपया बाद में पुनः प्रयास करें।");
}
?>

5. प्रोसीजरल स्टाइल में एरर हैंडलिंग (Error Handling in Procedural Style)

यदि आप प्रोसीजरल स्टाइल का उपयोग कर रहे हैं, तो mysqli_connect_error() फंक्शन का उपयोग करके एरर हैंडलिंग की जा सकती है।

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = mysqli_connect($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if (!$conn) {
    error_log("कनेक्शन विफल: " . mysqli_connect_error());
    die("कनेक्शन विफल: कृपया बाद में पुनः प्रयास करें।");
}
echo "कनेक्शन सफल रहा!";
?>

इन तरीकों का उपयोग करके, आप डेटाबेस कनेक्शन त्रुटियों को प्रभावी ढंग से संभाल सकते हैं और उपयोगकर्ताओं को बेहतर अनुभव प्रदान कर सकते हैं। एरर हैंडलिंग का सही उपयोग आपके एप्लिकेशन को अधिक स्थिर और विश्वसनीय बनाता है।

डेटा जोड़ना (Inserting Data)

डेटाबेस में डेटा जोड़ना एक सामान्य कार्य है, जो विभिन्न प्रकार के एप्लिकेशन्स में उपयोग होता है। MySQLi का उपयोग करके डेटाबेस में डेटा जोड़ना आसान और सीधा है। इस सेक्शन में, हम एक HTML फॉर्म का उपयोग करके उपयोगकर्ता से डेटा प्राप्त करेंगे और फिर उस डेटा को MySQL डेटाबेस में जोड़ेंगे।

HTML फॉर्म बनाना (Creating an HTML Form)

सबसे पहले, हमें एक HTML फॉर्म बनाना होगा, जिससे उपयोगकर्ता से डेटा प्राप्त किया जा सके। उदाहरण के लिए, हम एक साधारण फॉर्म बनाएंगे जिसमें उपयोगकर्ता का नाम और ईमेल पता शामिल होगा।

<!DOCTYPE html>
<html>
<head>
    <title>डेटा जोड़ें</title>
</head>
<body>
    <h2>डेटा जोड़ें</h2>
    <form action="insert.php" method="post">
        <label for="name">नाम:</label><br>
        <input type="text" id="name" name="name" required><br><br>
        <label for="email">ईमेल:</label><br>
        <input type="email" id="email" name="email" required><br><br>
        <input type="submit" value="जोड़ें">
    </form>
</body>
</html>

डेटा जोड़ने के लिए PHP स्क्रिप्ट (PHP Script to Insert Data)

अब, हम एक PHP स्क्रिप्ट बनाएंगे जो HTML फॉर्म से प्राप्त डेटा को MySQL डेटाबेस में जोड़ देगी। इसे insert.php फाइल में लिखें।

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    die("कनेक्शन विफल: " . $conn->connect_error);
}

// फॉर्म से डेटा प्राप्त करना
$name = $_POST['name'];
$email = $_POST['email'];

// डेटा जोड़ने के लिए SQL क्वेरी
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";

// प्रिपेयर स्टेटमेंट का उपयोग करना
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $name, $email);

// डेटा जोड़ना
if ($stmt->execute()) {
    echo "नया रिकॉर्ड सफलतापूर्वक जोड़ा गया है।";
} else {
    echo "त्रुटि: " . $sql . "<br>" . $conn->error;
}

// कनेक्शन बंद करना
$stmt->close();
$conn->close();
?>

इस उदाहरण में:

  • सबसे पहले, हम डेटाबेस कनेक्शन स्थापित करते हैं।
  • HTML फॉर्म से डेटा प्राप्त करते हैं।
  • SQL INSERT क्वेरी का उपयोग करके डेटा को डेटाबेस में जोड़ते हैं।
  • प्रिपेयर स्टेटमेंट और बाइंड पैरामीटर्स का उपयोग करते हुए डेटा को सुरक्षित रूप से जोड़ते हैं।
  • सफलतापूर्वक डेटा जोड़ने पर एक संदेश प्रदर्शित करते हैं, और कनेक्शन को बंद कर देते हैं।

इस सेक्शन में, हमने देखा कि कैसे MySQLi का उपयोग करके एक HTML फॉर्म से डेटा प्राप्त करके उसे डेटाबेस में जोड़ा जा सकता है। प्रिपेयर स्टेटमेंट का उपयोग करके, हम SQL इंजेक्शन के खतरों से बच सकते हैं और डेटाबेस ऑपरेशन्स को सुरक्षित बना सकते हैं। अगले सेक्शन में, हम डेटाबेस से डेटा पढ़ने के तरीकों पर चर्चा करेंगे।

डेटा पढ़ना (Reading Data)

डेटाबेस से डेटा पढ़ना वेब एप्लिकेशन्स का एक महत्वपूर्ण हिस्सा है। MySQLi का उपयोग करके डेटाबेस से डेटा पढ़ना और उसे HTML तालिका में प्रदर्शित करना बहुत आसान है। इस सेक्शन में, हम डेटाबेस से डेटा पढ़ने और उसे HTML तालिका में प्रदर्शित करने के लिए आवश्यक कदम और कोड उदाहरण देखेंगे।

डेटाबेस से डेटा पढ़ना (Fetching Data from Database)

डेटाबेस से डेटा पढ़ने के लिए, हम SELECT SQL क्वेरी का उपयोग करेंगे। इसके बाद, हम प्राप्त डेटा को एक HTML तालिका में प्रदर्शित करेंगे।

PHP स्क्रिप्ट: डेटा पढ़ना (PHP Script: Fetching Data)

डेटाबेस से डेटा पढ़ने और उसे HTML तालिका में प्रदर्शित करने के लिए निम्नलिखित PHP स्क्रिप्ट का उपयोग करें:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydatabase";

// कनेक्शन स्थापित करना
$conn = new mysqli($servername, $username, $password, $dbname);

// कनेक्शन की जाँच करना
if ($conn->connect_error) {
    die("कनेक्शन विफल: " . $conn->connect_error);
}

// डेटा पढ़ने के लिए SQL क्वेरी
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

// HTML तालिका बनाना
echo "<table border='1'>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
</tr>";

// परिणाम की जाँच करना और डेटा प्रदर्शित करना
if ($result->num_rows > 0) {
    // प्रत्येक पंक्ति के लिए डेटा प्रदर्शित करना
    while($row = $result->fetch_assoc()) {
        echo "<tr>
        <td>" . $row["id"] . "</td>
        <td>" . $row["name"] . "</td>
        <td>" . $row["email"] . "</td>
        </tr>";
    }
} else {
    echo "<tr><td colspan='3'>कोई डेटा नहीं मिला</td></tr>";
}

echo "</table>";

// कनेक्शन बंद करना
$conn->close();
?>

इस उदाहरण में:

  • सबसे पहले, हम डेटाबेस कनेक्शन स्थापित करते हैं।
  • SELECT SQL क्वेरी का उपयोग करके users टेबल से डेटा पढ़ते हैं।
  • यदि परिणाम सेट में डेटा है, तो प्रत्येक पंक्ति को HTML तालिका की पंक्ति में प्रदर्शित करते हैं।
  • यदि कोई डेटा नहीं है, तो “कोई डेटा नहीं मिला” संदेश प्रदर्शित करते हैं।
  • अंत में, कनेक्शन को बंद कर देते हैं।

HTML तालिका बनाना (Creating HTML Table)

उपरोक्त PHP स्क्रिप्ट HTML तालिका बनाता है और डेटाबेस से प्राप्त डेटा को उस तालिका में प्रदर्शित करता है। यह तालिका निम्नलिखित की तरह दिखाई देगी:

<!DOCTYPE html>
<html>
<head>
    <title>डेटाबेस डेटा</title>
    <style>
        table {
            width: 100%;
            border-collapse: collapse;
        }
        table, th, td {
            border: 1px solid black;
        }
        th, td {
            padding: 10px;
            text-align: left;
        }
    </style>
</head>
<body>
    <?php include 'fetch_data.php'; ?>
</body>
</html>

इस HTML कोड में:

  • तालिका को शैलीबद्ध करने के लिए कुछ CSS शामिल किया गया है।
  • fetch_data.php फाइल को शामिल किया गया है, जो उपरोक्त PHP स्क्रिप्ट है।

इस सेक्शन में, हमने देखा कि कैसे MySQLi का उपयोग करके डेटाबेस से डेटा पढ़ा जा सकता है और उसे HTML तालिका में प्रदर्शित किया जा सकता है। यह तरीका आपको अपने वेब एप्लिकेशन्स में डेटाबेस से डेटा को इंटरैक्टिव और उपयोगकर्ता के अनुकूल तरीके से प्रदर्शित करने में मदद करेगा। अगले सेक्शन में, हम डेटाबेस में पहले से मौजूद डेटा को अपडेट करने के तरीकों पर चर्चा करेंगे।



Table of Contents

Index