ServBay में PHP MySQL एक्सटेंशन (mysqlnd, mysqli, PDO) का उपयोग कैसे करें
ServBay एक शक्तिशाली एकीकृत स्थानीय वेब डेवलपमेंट प्लेटफॉर्म है, जो PHP एप्लिकेशन और डेटाबेस के बीच की इंटरैक्शन को बहुत आसान बनाता है। यह अपने सभी समर्थित PHP वर्शन के लिए प्रमुख MySQL डेटाबेस एक्सटेंशन – जैसे mysqlnd, mysqli और PDO_MySQL – पहले से इंस्टॉल कर देता है और डिफ़ॉल्ट रूप से सक्षम रखता है। इसका मतलब है कि आप बिना किसी मैन्युअल सेटअप के सीधे PHP प्रोजेक्ट्स में MySQL या MariaDB डेटाबेस के साथ काम शुरू कर सकते हैं।
ServBay में उपलब्ध PHP MySQL एक्सटेंशन
ServBay अपने PHP वातावरण के भीतर तीन प्रमुख MySQL एक्सटेंशन को शामिल करता है, जिससे अनुकूलता और बेहतर प्रदर्शन सुनिश्चित होता है:
- MySQL Native Driver (
mysqlnd): PHP का नेटिव ड्राइवर, जोmysqliऔरPDO_MySQLके बैकएंड के रूप में कार्य करता है। यह MySQL / MariaDB सर्वर के साथ संचार हेतु आधार प्रदान करता है, आमतौर पर बेहतर परफॉर्मेंस और मेमोरी मैनेजमेंट के साथ। - MySQLi (
mysqli): MySQL Improved एक्सटेंशन, जो ऑब्जेक्ट ओरिएंटेड और प्रोसीजरल – दोनों टाइप के इंटरफेस ऑफर करता है। यह खासतौर से MySQL और MariaDB डेटाबेस के लिए डिज़ाइन है, साथ में प्रीपेयर स्टेटमेंट, ट्रांजेक्शन, स्टोर्ड प्रोसिजर सपोर्ट और मल्टी-क्वेरी जैसी उन्नत सुविधाएं भी देता है। - PDO MySQL (
PDO_MySQL): PHP Data Objects (PDO) का MySQL ड्राइवर। PDO एक एकीकृत स्तर का API देता है, जिससे डेवलपर अलग-अलग डेटाबेस टाइप्स (जैसे MySQL, MariaDB, PostgreSQL, SQLite आदि) के साथ एक ही इंटरफेस का उपयोग कर सकते हैं — इस प्रकार कोड पोर्टेबिलिटी को बढ़ाता है।
एक्सटेंशनों की डिफ़ॉल्ट स्थिति
ServBay में, mysqlnd, mysqli और PDO_MySQL एक्सटेंशनों को सभी PHP वर्जनों में डिफ़ॉल्ट रूप से सक्षम किया गया है। आपको इन्हें एक्टिवेट करने के लिए अतिरिक्त कोई कदम नहीं उठाना पड़ता। ServBay आपके लिए php.ini में आवश्यक सेटिंग्स पहले ही कर देता है, जिससे आप डायरेक्ट अपनी कोड में इन एक्सटेंशनों का यूज़ करके डेटाबेस से कनेक्ट कर सकते हैं।
विभिन्न PHP MySQL एक्सटेंशनों की विस्तार से जानकारी
इन तीनों एक्सटेंशनों के बीच के अंतर समझना आपको अपने प्रोजेक्ट की आवश्यकताओं के हिसाब से सही विकल्प चुनने में मदद करेगा:
MySQL Native Driver (
mysqlnd)- मुख्य रोल:
mysqlndएक C लैंग्वेज में लिखा गया PHP नेटिव ड्राइवर है, जो PHP और MySQL/MariaDB सर्वर के बीच कम्युनिकेशन की नींव है। - मुख्य विशेषताएँ: PHP 5.3 से यह
mysqliऔरPDO_MySQLका डिफ़ॉल्ट बैकएंड बन गया है। इसे PHP के भीतर सीधे इंटीग्रेट किया गया है, बाहरी लाइब्रेरी (libmysqlclient) की जरूरत नहीं पड़ती। - प्रमुख लाभ: यह आमतौर पर पुराने
libmysqlclientसे बेहतर स्पीड, मेमोरी कंट्रोल, असिंक्वोनस क्वेरी और एक्सटेंशन प्लगइन सपोर्ट जैसी आधुनिक क्षमताएँ देता है। आमतौर पर, आप सीधेmysqlndके साथ काम नहीं करेंगे; इसकी ताकत आपmysqliयाPDOके इस्तेमाल से पाते हैं।
- मुख्य रोल:
MySQLi (
mysqli)- मुख्य रोल: यह एक्सटेंशन खासतौर से MySQL (4.1.3 और ऊपर) तथा MariaDB से कनेक्शन के लिए बनाया गया है।
- मुख्य विशेषताएँ: इसमें ऑब्जेक्ट ओरिएंटेड और प्रोसीजरल – दोनों टाइप के प्रोग्रामिंग इंटरफेस मिलते हैं। यह SQL इनजेक्शन से सुरक्षा के लिए प्रीपेयर स्टेटमेंट, ट्रांजेक्शन, स्टोर्ड प्रोसीजर, मल्टी-क्वेरी जैसे कई आधुनिक फीचर्स को सपोर्ट करता है।
- प्रमुख लाभ: फंक्शनलिटी से भरपूर, यह MySQL/MariaDB के लिए ऑप्टिमाइज़ किया गया है और बेहतरीन परफॉर्मेंस देता है। यदि आपका प्रोजेक्ट विशेष रूप से इन्हीं डेटाबेस पर निर्भर है और आपको इनके एडवांस्ड फीचर्स की जरूरत है, तो
mysqliएक मजबूत विकल्प है।
PDO MySQL (
PDO_MySQL)- मुख्य रोल: PHP Data Objects (PDO) एक हल्का और यूनीफॉर्म इंटरफेस देगा है, जिससे अलग-अलग डेटाबेस से कनेक्शन बनाना आसान होता है।
PDO_MySQLPDO का MySQL/MariaDB ड्राइवर है। - मुख्य विशेषताएँ: पूरे आवेदन में एक समान API (
PDO,PDOStatementक्लास) के ज़रिए डाटाबेस ऑपरेशन। प्रीपेयर स्टेटमेंट अनिवार्य (prepare() और execute() के साथ), जिससे SQL इनजेक्शन का रिस्क बहुत कम। ट्रांजेक्शन सपोर्ट। - प्रमुख लाभ: डेटाबेस पोर्टेबिलिटी PDO की सबसे बड़ी खासियत है। अगर भविष्य में आपके ऐप को PostgreSQL, SQLite या किसी अन्य सपोर्टेड DB पर माइग्रेट करना है, तो PDO से कोड चेंजिंग न्यूनतम रहेंगे। साफ-सुथरा, ऑब्जेक्ट ओरिएंटेड, शॉर्ट एवं सिक्योर कोड मिलता है — आमतौर पर नए प्रोजेक्ट्स के लिए PDO की सलाह दी जाती है।
- मुख्य रोल: PHP Data Objects (PDO) एक हल्का और यूनीफॉर्म इंटरफेस देगा है, जिससे अलग-अलग डेटाबेस से कनेक्शन बनाना आसान होता है।
PHP कोड उदाहरण: डेटाबेस से कनेक्ट करना और ऑपरेशन करना
यहाँ दो उदाहरण दिए गए हैं जो दिखाते हैं कि आप किस तरह से ServBay द्वारा मैनेज किए गए डेटाबेस (जैसे MariaDB या MySQL) में mysqli और PDO एक्सटेंशन से कनेक्शन और बेसिक ऑपरेशन कर सकते हैं।
पूर्व आवश्यकताएं:
- ServBay में MySQL या MariaDB सेवा चालू होनी चाहिए।
- आप ने
servbay_dbनाम से एक डेटाबेस बना लिया है। servbay_userयूजर (पासवर्ड:your_password) कोservbay_dbके अधिकार दे दिए हैं।- डेटाबेस
servbay_dbमेंusersनामक एक टेबल है, जिसमेंid(INT, PK, AI),name(VARCHAR),email(VARCHAR),age(INT) कॉलम हैं।
आप इन सेटअप्स को ServBay के बिल्ट-इन phpMyAdmin या किसी भी अन्य डेटाबेस टूल से कर सकते हैं।
कोड उदाहरण (mysqli तरीका)
php
<?php
// --- mysqli उदाहरण ---
// डेटाबेस कनेक्शन पैरामीटर
$servername = "127.0.0.1"; // या 'localhost'
$port = 3306; // ServBay के MySQL/MariaDB का डिफ़ॉल्ट पोर्ट
$username = "servbay_user";
$password = "your_password"; // कृपया यहाँ अपना असली पासवर्ड डालें
$dbname = "servbay_db";
// mysqli कनेक्शन बनाना (ऑब्जेक्ट ओरिएंटेड तरीका)
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// कनेक्शन सफल है या नहीं, जांचें
if ($conn->connect_error) {
die("mysqli Connection failed: " . $conn->connect_error);
}
echo "mysqli Connected successfully<br>";
// डाटा डालना (SQL इंजेक्शन से सुरक्षा हेतु प्रीपेयर स्टेटमेंट)
$stmt = $conn->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$name = "ServBay Demo";
$email = "mysqli@servbay.demo";
$age = 5;
// "ssi" का मतलब है string, string, integer टाइप्स
$stmt->bind_param("ssi", $name, $email, $age);
if ($stmt->execute()) {
echo "mysqli: New record created successfully<br>";
} else {
echo "mysqli Error: " . $stmt->error . "<br>";
}
$stmt->close();
// डाटा क्वेरी करना
$sql = "SELECT id, name, email, age FROM users WHERE name = 'ServBay Demo'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "mysqli Queried data:<br>";
// रिकॉर्ड दिखाएं
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Age: " . $row["age"]. "<br>";
}
} else {
echo "mysqli: 0 results found<br>";
}
// कनेक्शन बंद करें
$conn->close();
?>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
कोड उदाहरण (PDO तरीका)
php
<?php
// --- PDO उदाहरण ---
// डेटाबेस कनेक्शन पैरामीटर
$host = '127.0.0.1'; // या 'localhost'
$port = 3306; // ServBay के MySQL/MariaDB का डिफ़ॉल्ट पोर्ट
$dbname = 'servbay_db';
$username = 'servbay_user';
$password = 'your_password'; // कृपया यहाँ अपना असली पासवर्ड डालें
$charset = 'utf8mb4';
// डाटा सोर्स नेम (DSN)
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
// PDO कनेक्शन विकल्प
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // चेतावनी की बजाय एक्सेप्शन दें
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // डिफ़ॉल्ट रूप से एसोसिएटिव ऐरे फेच करें
PDO::ATTR_EMULATE_PREPARES => false, // नेटिव प्रीपेयर स्टेटमेंट का उपयोग करें
];
try {
// PDO कनेक्शन इंस्टांट बनाएं
$pdo = new PDO($dsn, $username, $password, $options);
echo "PDO Connected successfully<br>";
// डाटा डालना (प्रीपेयर स्टेटमेंट के साथ)
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$name = 'ServBay PDO Demo';
$email = 'pdo@servbay.demo';
$age = 10;
// पैरामीटर bind करें और execute करें
$stmt->execute([
':name' => $name,
':email' => $email,
':age' => $age
]);
echo "PDO: New record created successfully<br>";
// डाटा क्वेरी करना
$stmt = $pdo->prepare("SELECT id, name, email, age FROM users WHERE name = :name");
$stmt->execute([':name' => 'ServBay PDO Demo']);
// सभी परिणाम पाएं
$users = $stmt->fetchAll(); // डिफ़ॉल्ट FETCH_ASSOC यूज़ किया गया है
if ($users) {
echo "PDO Queried data:<br>";
foreach ($users as $row) {
echo "id: " . $row['id'] . " - Name: " . $row['name'] . " - Email: " . $row['email'] . " - Age: " . $row['age'] . "<br>";
}
} else {
echo "PDO: 0 results found<br>";
}
} catch (\PDOException $e) {
// कनेक्शन या क्वेरी त्रुटि को कैच और दिखाएँ
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// आमतौर पर स्क्रिप्ट के अंत में PDO कनेक्शन स्वयं ही बंद हो जाता है, अलग से बंद करने की जरूरत नहीं
// $pdo = null; // चाहें तो null सेट करके मैन्युअली कर सकते हैं
?>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
कोड कहाँ रखें: इनमें से कोई भी कोड उदाहरण .php फाइल (जैसे db_test_mysqli.php या db_test_pdo.php) के रूप में सेव करें और उसे अपने ServBay वेबसाइट रूट फोल्डर (जैसे /Applications/ServBay/www/myproject/) में रखें। फिर अपने ब्राउज़र पर संबंधित URL (जैसे http://myproject.servbay.demo/db_test_mysqli.php) खोलें। सुनिश्चित करें कि आपकी वेबसाइट ServBay में सही-सही सेट है और चल रही है।
अक्सर पूछे जाने वाले सवाल (FAQ)
Q: क्या मुझे ServBay में PHP के MySQL एक्सटेंशन मैन्युअली इंस्टॉल करना पड़ेगा?
A: नहीं। ServBay आपके लिए हमेशा सभी PHP वर्शन में mysqlnd, mysqli और PDO_MySQL एक्सटेंशन पहले से इंस्टॉल और डिफ़ॉल्ट रूप से एक्टिवेटेड रखता है। PHP कोड में आप इन्हें बिना किसी अतिरिक्त सेटअप के इस्तेमाल कर सकते हैं।
Q: mysqli और PDO – इनमें से क्या मुझे चुनना चाहिए?
A:
- PDO की सलाह दी जाती है: यदि आपके ऐप में भविष्य में कई प्रकार के डाटाबेस या अधिक मॉड्यूलर, ऑब्जेक्ट ओरिएंटेड और पोर्टेबल कोड की जरूरत है, तो PDO सबसे बढ़िया रहेगा। यह प्रीपेयर स्टेटमेंट को अनिवार्य करता है, जिससे कोड और सुरक्षित बनता है।
- mysqli तब उपयोगी है: जब प्रोजेक्ट केवल MySQL या MariaDB पर आधारित है और उसके विशेष/एडवांस फीचर्स यूज़ करने हैं। इसमें ऑब्जेक्ट और प्रोसीजरल – दोनों इंडरफेस मिलते हैं।
नए प्रोजेक्ट्स के लिए आमतौर पर PDO का इस्तेमाल करने की ही सलाह दी जाती है।
Q: ServBay में MySQL/MariaDB से कनेक्ट होने के लिए कौन से पैरामीटर यूज करें?
A:
- Host (होस्टनेम): आमतौर पर
127.0.0.1याlocalhost। - Port (पोर्ट): ServBay में MySQL और MariaDB का डिफ़ॉल्ट पोर्ट
3306है। आप ServBay के पैकेज मैनेजर में सही पोर्ट देख सकते हैं। - Username (यूज़रनेम) / Password (पासवर्ड): MySQL/MariaDB में बनाए गए यूज़र का नाम-पासवर्ड। पहली बार इस्तेमाल में नया यूजर बना सकते हैं या root (production में root यूज न करें)। phpMyAdmin या अन्य टूल्स से मैनेज करें।
- Database Name (डेटाबेस का नाम): उस डेटाबेस का नाम जिससे आप कनेक्ट होना चाहते हैं।
Q4: मेरा एक पुराना प्रोजेक्ट है जिसमें mysql_* फंक्शन उपयोग किए गए हैं। क्या ServBay इसे सपोर्ट करता है?
A: हाँ, पुराने या लेगेसी PHP प्रोजेक्ट्स के बेहतर रख-रखाव/माइग्रेशन के लिए ServBay अपने PHP 5.6 वातावरण में पुराने mysql_* फंक्शन (जैसे mysql_connect) का सपोर्ट देता है। ये फंक्शन PHP 5.5 में डीप्रिकेट हो चुके थे और PHP 7 से पूरी तरह हटा दिए गए हैं। ServBay की PHP 5.6 आपको उन ऐप्स को चलाने की सहूलियत देता है, जिससे आपको पुराने PHP सोर्स ढूँढने की ज़रूरत नहीं।
लेकिन, ईमानदारी से सलाह:
- इस फीचर का यूज़ केवल अस्थायी कम्पैटिबिलिटी या लीगेसी मेंटेनेंस के लिए ही करें।
- नए प्रोजेक्ट्स या पुराने कोड के रिफैक्टरिंग में हमेशा
mysqliयाPDOएक्सटेंशन पर माइग्रेट करें।mysql_*फंक्शन असुरक्षित माने जाते हैं (जैसे SQL इनजेक्शन रिस्क) और इनमें आधुनिक DB फीचर्स का सपोर्ट नहीं है।
निष्कर्ष
ServBay अपने सभी PHP वर्शन में पहले से इंस्टॉल और डिफ़ॉल्ट इनेबल्ड mysqlnd, mysqli तथा PDO_MySQL एक्सटेंशनों के साथ, और PHP 5.6 में पुराने mysql_* फंक्शनों का कम्पैटिबिलिटी सपोर्ट देकर PHP डेवेलपर्स के लिए डेटाबेस वर्कफ्लो को बहुत आसान बनाता है। आपको एक्सटेंशन इंस्टॉल या कॉन्फ़िगर करने का झंझट नहीं रहता — सीधे कोड में आवश्यक एक्सटेंशन (PDO या mysqli की सलाह) चुनकर ServBay के MySQL या MariaDB से कनेक्शन व ऑपरेशन तेज़ी से कर सकते हैं।
इस तरह की out-of-the-box सुविधा से आप अपना ध्यान एप्लिकेशन लॉजिक पर केंद्रित कर सकते हैं, ServBay के स्थिर, तेज़ लोकल वातावरण का लाभ लेते हुए अपना वेब प्रोजेक्ट जल्दी बना, टेस्ट और मेंटेन कर सकते हैं।
