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_MySQL
PDO का 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 = "[email protected]";
$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 = '[email protected]';
$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 के स्थिर, तेज़ लोकल वातावरण का लाभ लेते हुए अपना वेब प्रोजेक्ट जल्दी बना, टेस्ट और मेंटेन कर सकते हैं।