ServBay में PHP PostgreSQL एक्सटेंशन (pgsql, PDO_PGSQL) का उपयोग
ServBay एक शक्तिशाली, एकीकृत लोकल वेब डेवेलपमेंट एनवायरनमेंट है, जिसमें PostgreSQL डेटाबेस के लिए सपोर्ट बिल्ट-इन होता है, और PHP के लिए आवश्यक एक्सटेंशन पहले से उपलब्ध रहते हैं। इससे डेवलपर्स PHP एप्लीकेशन में PostgreSQL डेटाबेस से आसानी से कनेक्ट और ऑपरेट कर सकते हैं। ServBay के सभी सपोर्टेड PHP वर्ज़न के लिए pgsql
और PDO_PGSQL
एक्सटेंशन पहले से इंस्टॉल और डिफ़ॉल्ट रूप से एक्टिवेटेड होते हैं।
PHP PostgreSQL एक्सटेंशन का परिचय
PostgreSQL एक शक्तिशाली, ओपन-सोर्स ऑब्जेक्ट-रिलेशनल डेटाबेस सिस्टम है, जो अपनी स्थिरता, डेटा इंटीग्रिटी और फीचर्स के लिए प्रसिद्ध है। PHP में PostgreSQL डेटाबेस के साथ इंटरैक्ट करने के लिए उपयुक्त एक्सटेंशन जरूरी है। ServBay दो मुख्य एक्सटेंशन प्रोवाइड करता है:
pgsql
एक्सटेंशन: यह PHP का नेटिव PostgreSQL एक्सटेंशन है, जिसमेंpg_
से शुरू होने वाले फंक्शन (जैसेpg_connect
,pg_query
,pg_fetch_assoc
आदि) शामिल हैं, जिनसे PostgreSQL डेटाबेस को डायरेक्ट ऑपरेट किया जा सकता है। यह डेवलपर्स को PostgreSQL के स्पेशल फीचर्स के उपयोग की सुविधा देता है।PDO_PGSQL
ड्राइवर: यह PHP Data Objects (PDO) एक्सटेंशन का हिस्सा है, खासकर PostgreSQL के लिए। PDO एक यूनिफाइड डेटाबेस ऐक्सेस लेयर प्रदान करता है जिससे एक जैसी API के साथ विभिन्न डेटाबेस (जैसे PostgreSQL, MySQL, SQLite आदि) के साथ इंटरैक्ट कर सकते हैं। यह कोड को ज्यादा पोर्टेबल और बनाए रखने में आसान बनाता है।
ServBay में PHP PostgreSQL एक्सटेंशन
ServBay हरेक सपोर्टेड PHP वर्जन में pgsql
एक्सटेंशन और PDO_PGSQL
ड्राइवर को पहले से इंस्टॉल और डिफ़ॉल्ट रूप से सक्रिय रखता है।
PostgreSQL एक्सटेंशन को कैसे एक्टिवेट करें
ServBay में आपको pgsql
या PDO_PGSQL
एक्सटेंशन चालू करने के लिए कोई मैन्युअल स्टेप्स नहीं करने पड़ते। ये पहले से एक्टिवेटेड और कॉन्फ़िगर किए हुए हैं, जिन्हें आप PHP कोड में डायरेक्ट उपयोग कर सकते हैं।
PHP कोड में PostgreSQL का उपयोग
एक्सटेंशन एक्टिवेट होने के बाद, आप PHP कोड में pgsql
फंक्शन या PDO ऑब्जेक्ट के साथ PostgreSQL डेटाबेस से कनेक्ट और ऑपरेशन कर सकते हैं।
पूर्व शर्तें:
- आपको ServBay में PostgreSQL सर्विस रन करनी होगी।
- मान लीजिए, आपने
servbay_db
नामक डेटाबेस बनाया है। - मान लें आपने
servbay_user
नामक यूज़र बनाया है, जिसका पासवर्डyour_password
है, और इस यूज़र कोservbay_db
डेटाबेस पर उचित अनुमति दी गई है। - मान लें
servbay_db
डेटाबेस में एक टेबलusers
है, जिसमेंid
(SERIAL PRIMARY KEY),name
(VARCHAR),email
(VARCHAR),age
(INT) नामक कॉलम हैं।
इन सेटअप्स को आप ServBay के बिल्ट-इन adminer या अन्य डेटाबेस टूल जैसे DBeaver, pgAdmin की मदद से पूरा कर सकते हैं।
नीचे दोनों तरीकों से डेटाबेस से कनेक्ट कर बेसिक ऑपरेशन करने के PHP कोड उदाहरण दिए गए हैं:
उदाहरण कोड (pgsql
एक्सटेंशन के साथ)
php
<?php
// --- pgsql एक्सटेंशन उदाहरण ---
// डेटाबेस कनेक्शन पैरामीटर
$host = "127.0.0.1"; // या 'localhost'
$port = "5432"; // PostgreSQL का डिफ़ॉल्ट पोर्ट
$dbname = "servbay_db";
$user = "servbay_user";
$password = "your_password"; // कृपया अपने वास्तविक पासवर्ड से बदलें
// कनेक्शन स्ट्रिंग तैयार करें
$conn_string = "host={$host} port={$port} dbname={$dbname} user={$user} password={$password}";
// PostgreSQL डेटाबेस से कनेक्ट करें
$conn = pg_connect($conn_string);
// कनेक्शन सफल है या नहीं देखिए
if (!$conn) {
die("pgsql Connection failed: " . pg_last_error());
}
echo "pgsql Connected successfully<br>";
// डेटा इंसर्ट करना (ध्यान दें: pg_query पैरामीटर बाइंडिंग सपोर्ट नहीं करता, सुरक्षा के लिए pg_query_params का उपयोग करें)
$name = "ServBay Pgsql";
$email = "[email protected]";
$age = 7;
// सुरक्षित पैरामीटराइज़्ड क्वेरी के लिए pg_query_params का उपयोग करें
$query = "INSERT INTO users (name, email, age) VALUES ($1, $2, $3)";
$result = pg_query_params($conn, $query, array($name, $email, $age));
if ($result) {
echo "pgsql: New record created successfully<br>";
} else {
echo "pgsql Error: " . pg_last_error($conn) . "<br>";
}
// डेटा क्वेरी करना
$query = "SELECT id, name, email, age FROM users WHERE name = $1";
$result = pg_query_params($conn, $query, array('ServBay Pgsql'));
if ($result) {
echo "pgsql Queried data:<br>";
// परिणाम में कतारें हैं या नहीं देखें
if (pg_num_rows($result) > 0) {
// सभी रोज़ को एसोसिएटिव एर्रे के रूप में प्राप्त करें
$data = pg_fetch_all($result, PGSQL_ASSOC);
foreach ($data as $row) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Age: " . $row["age"]. "<br>";
}
} else {
echo "pgsql: 0 results found<br>";
}
} else {
echo "pgsql Error querying data: " . pg_last_error($conn) . "<br>";
}
// डेटाबेस कनेक्शन बंद करें
pg_close($conn);
?>
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
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
उदाहरण कोड (PDO_PGSQL
के साथ)
php
<?php
// --- PDO_PGSQL उदाहरण ---
// डेटाबेस कनेक्शन पैरामीटर
$host = '127.0.0.1'; // या 'localhost'
$port = 5432; // PostgreSQL का डिफ़ॉल्ट पोर्ट
$dbname = 'servbay_db';
$username = 'servbay_user';
$password = 'your_password'; // कृपया अपने असली पासवर्ड से बदलें
// PostgreSQL के लिए डेटा सोर्स नेम (DSN)
$dsn = "pgsql:host=$host;port=$port;dbname=$dbname";
// PDO कनेक्शन विकल्प
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // वार्निंग की बजाय एक्सेप्शन
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // एसोसिएटिव एर्रे के रूप में डेटा फेच
// PDO::ATTR_EMULATE_PREPARES => false, // प्रायः PostgreSQL के लिए जरूरी नहीं
];
try {
// PDO कनेक्शन इंस्टेंस बनाएं
$pdo = new PDO($dsn, $username, $password, $options);
echo "PDO_PGSQL Connected successfully<br>";
// डेटा इंसर्ट करें (प्रीपेयर्ड स्टेटमेंट्स के साथ)
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$name = 'ServBay PDO Pgsql';
$email = '[email protected]';
$age = 12;
// पैरामीटर्स बाइंड कर के एक्जीक्यूट करें
$stmt->execute([
':name' => $name,
':email' => $email,
':age' => $age
]);
echo "PDO_PGSQL: New record created successfully<br>";
// डेटा क्वेरी करें
$stmt = $pdo->prepare("SELECT id, name, email, age FROM users WHERE name = :name");
$stmt->execute([':name' => 'ServBay PDO Pgsql']);
// सभी परिणाम प्राप्त करें
$users = $stmt->fetchAll(); // डिफ़ॉल्ट FETCH_ASSOC मोड
if ($users) {
echo "PDO_PGSQL Queried data:<br>";
foreach ($users as $row) {
echo "id: " . $row['id'] . " - Name: " . $row['name'] . " - Email: " . $row['email'] . " - Age: " . $row['age'] . "<br>";
}
} else {
echo "PDO_PGSQL: 0 results found<br>";
}
} catch (\PDOException $e) {
// कनेक्शन या क्वेरी में त्रुटि आए तो दिखाएं
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// स्क्रिप्ट के अंत में PDO कनेक्शन आमतौर पर अपने आप बंद हो जाता है
// $pdo = 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
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
कोड प्लेसमेंट: उपरोक्त किसी भी कोड उदाहरण को .php
फ़ाइल (जैसे pg_test_native.php
या pg_test_pdo.php
) के रूप में सेव करें और अपने ServBay वेबसाइट की रूट डिरेक्टरी (जैसे /Applications/ServBay/www/myproject/
) में रखें। फिर ब्राउज़र में संबंधित URL (जैसे http://myproject.servbay.demo/pg_test_native.php
) पर जाकर देख सकते हैं। यह निश्चित कर लें कि आपकी वेबसाइट और PostgreSQL सर्विस ServBay में सही रूप से सेटअप और रन हो रही है।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Q: क्या मुझे ServBay में PHP के PostgreSQL एक्सटेंशन (pgsql
या PDO_PGSQL
) को मैन्युअली इंस्टॉल करने की जरूरत है?
A: नहीं, जरूरत नहीं है। ServBay आपके द्वारा इस्तेमाल किए जाने वाले सभी PHP वर्ज़न के लिए pgsql
और PDO_PGSQL
एक्सटेंशन को पहले से इंस्टॉल और डिफ़ॉल्ट रूप से एक्टिवेट रखता है। आप सीधे कोड में इनका इस्तेमाल कर सकते हैं, किसी अतिरिक्त इंस्टॉलेशन या सेटअप की जरूरत नहीं है।
Q: pgsql
एक्सटेंशन और PDO_PGSQL
ड्राइवर में क्या फर्क है? मुझे कौन सा इस्तेमाल करना चाहिए?
A:
pgsql
एक्सटेंशन PostgreSQL के लिए विशेष फंक्शंस की एक पूरी सीरीज़ देता है (जैसेpg_connect
,pg_query_params
)। यदि आपको PostgreSQL के खास फीचर्स विस्तार से चाहिए, तो यह सही विकल्प है।PDO_PGSQL
PDO ऐब्स्ट्रैक्शन लेयर का हिस्सा है। यदि आप अपने डेटाबेस कोड को ज्यादा पोर्टेबल, सुरक्षित और आने वाले समय में किसी और डेटाबेस (जैसे MySQL) में माइग्रेट करना चाहते हैं, तो PDO उपयुक्त है। PDO प्रीपेयर्ड स्टेटमेंट्स के प्रयोग को मजबूरी बनाता है, जिससे सुरक्षा बढ़ती है — यह आजकल के PHP डेवेलपमेंट का मानक है।- सिफारिश: अगर प्रोजेक्ट नया है या कोड के पोर्टेबिलिटी, सुरक्षा को प्राथमिकता देना है, तो
PDO_PGSQL
का प्रयोग करें। पुराने प्रोजेक्ट या खासpgsql
फंक्शन जरूरत होने परpgsql
एक्सटेंशन भी इस्तेमाल कर सकते हैं।
Q: ServBay के PostgreSQL सर्विस से कनेक्शन के लिए जरूरी जानकारी (होस्ट, पोर्ट, यूज़रनेम, पासवर्ड, डेटाबेस नाम) मुझे कैसे मिलेगी?
A:
- होस्ट (Host): प्रायः
127.0.0.1
याlocalhost
होगा। - पोर्ट (Port): PostgreSQL का सामान्य पोर्ट
5432
है। आप ServBay के PostgreSQL विकल्पों में चल रहे पोर्ट की पुष्टि कर सकते हैं। - यूज़रनेम (Username) / पासवर्ड (Password) / डेटाबेस नाम (Database Name): ये वे मान हैं, जो आपने PostgreSQL सर्विस में बना कर दिए हैं। इन्हें ServBay के बिल्ट-इन adminer या अन्य PostgreSQL क्लाइंट टूल (जैसे pgAdmin, DBeaver) से बना सकते हैं और उनका पासवर्ड/परमिशन सेट कर सकते हैं।
Q: pgsql
एक्सटेंशन का उपयोग करते समय SQL Injection से कैसे बचें?
A: कभी भी यूज़र इनपुट को डायरेक्ट अपनी SQL क्वेरी में मर्ज मत करें। इसके बजाय pg_query_params()
फंक्शन का प्रयोग करें जिसमें क्वेरी और पैरामीटर अलग-अलग दिए जाते हैं, और ड्राइवर सुरक्षित रूप से पैरामीटर को हैंडल करता है। वैकल्पिक रूप से, यदि pg_query()
का प्रयोग करना जरूरी हो तो पहले pg_escape_string()
या pg_escape_literal()
के साथ यूज़र इनपुट को ठीक से एस्केप करें — पर आमतौर पर pg_query_params
का प्रयोग ज्यादा बेहतर है।
निष्कर्ष
ServBay लोकल macOS एनवायरनमेंट में PHP डेटाबेस एक्सटेंशन pgsql
और PDO_PGSQL
को प्री-इंस्टॉल और डिफ़ॉल्ट रूप से चालू करके PHP से PostgreSQL डेटाबेस से कनेक्ट करना बहुत आसान बना देता है। आपको एक्सटेंशन इंस्टॉलेशन या सेटअप की चिंता नहीं रहती - आप सिर्फ अपने प्रोजेक्ट की जरूरत मुताबिक एक्सटेंशन (बेहतर पोर्टेबिलिटी और सुरक्षा के लिए PDO की सिफारिश की जाती है) से PostgreSQL डेटाबेस ऐक्सेस कर सकते हैं। इससे डेवलपर वास्तविक एप्लीकेशन लॉजिक पर ध्यान केंद्रित कर सकते हैं और PostgreSQL की ताकत का भरपूर लाभ उठाते हुए भरोसेमंद वेब एप्लीकेशन बना सकते हैं।