PDO

From binaryoption
Jump to navigation Jump to search
Баннер1
    1. PHP डेटा ऑब्जेक्ट्स : शुरुआती गाइड

PHP डेटा ऑब्जेक्ट्स (PDO) एक डेटाबेस एक्सेस लेयर है जो PHP प्रोग्रामिंग भाषा के लिए एक सुसंगत इंटरफ़ेस प्रदान करता है। यह डेवलपर्स को विभिन्न डेटाबेस सिस्टम (जैसे MySQL, PostgreSQL, SQLite, Oracle, आदि) के साथ इंटरैक्ट करने की अनुमति देता है, बिना प्रत्येक डेटाबेस के लिए विशिष्ट कोड लिखने की आवश्यकता के। PDO एक आधुनिक, सुरक्षित और कुशल तरीका है डेटाबेस संचालन करने का, और यह ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) सिद्धांतों का पालन करता है।

PDO का परिचय

पारंपरिक रूप से, PHP में डेटाबेस से जुड़ने और डेटा संचालित करने के लिए `mysql_*` जैसे फ़ंक्शन का उपयोग किया जाता था। हालांकि, ये फ़ंक्शन पुराने हो चुके हैं और सुरक्षा संबंधी कमजोरियां हैं। PDO इन कमियों को दूर करता है और एक बेहतर, अधिक लचीला समाधान प्रदान करता है। PDO के मुख्य लाभ निम्नलिखित हैं:

  • सुरक्षा: PDO SQL इंजेक्शन हमलों से बचाव के लिए तैयार किए गए स्टेटमेंट (Prepared Statements) का उपयोग करता है।
  • पोर्टेबिलिटी: PDO कोड को डेटाबेस सिस्टम को बदलने के लिए न्यूनतम बदलावों के साथ विभिन्न डेटाबेस के साथ काम करने के लिए डिज़ाइन किया गया है।
  • ऑब्जेक्ट-ओरिएंटेड: PDO एक ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करता है, जो कोड को अधिक संरचित और रखरखाव योग्य बनाता है।
  • त्रुटि हैंडलिंग: PDO त्रुटि हैंडलिंग के लिए एक सुसंगत तरीका प्रदान करता है, जिससे समस्याओं का निदान और समाधान करना आसान हो जाता है।
  • ट्रांजेक्शन सपोर्ट: PDO ट्रांजेक्शन को आसानी से प्रबंधित करने की क्षमता प्रदान करता है।

PDO का उपयोग कैसे करें

PDO का उपयोग करने के लिए, आपको पहले PDO एक्सटेंशन को अपने PHP इंस्टॉलेशन में सक्षम करना होगा। यह आमतौर पर `php.ini` फ़ाइल में PDO एक्सटेंशन को अनकमेंट करके किया जाता है।

PDO के साथ काम करने के लिए मूल चरण निम्नलिखित हैं:

1. डेटाबेस कनेक्शन स्थापित करें: PDO क्लास का एक नया इंस्टेंस बनाएं, डेटाबेस ड्राइवर (DSN), उपयोगकर्ता नाम और पासवर्ड प्रदान करें। 2. SQL क्वेरी तैयार करें: एक SQL क्वेरी लिखें और इसे PDOStatement ऑब्जेक्ट बनाने के लिए `prepare()` विधि का उपयोग करके तैयार करें। 3. तैयार किए गए स्टेटमेंट को निष्पादित करें: `execute()` विधि का उपयोग करके तैयार किए गए स्टेटमेंट को निष्पादित करें। 4. परिणाम प्राप्त करें: `fetch()`, `fetchAll()`, या अन्य विधियों का उपयोग करके क्वेरी परिणाम प्राप्त करें। 5. कनेक्शन बंद करें: डेटाबेस कनेक्शन को बंद करने के लिए `$pdo = null;` का उपयोग करें।

डेटाबेस कनेक्शन स्थापित करना

डेटाबेस कनेक्शन स्थापित करने के लिए, आपको एक डेटा सोर्स नेम (DSN) प्रदान करना होगा। DSN डेटाबेस ड्राइवर, डेटाबेस नाम, होस्ट, पोर्ट और अन्य कनेक्शन पैरामीटर निर्दिष्ट करता है।

डेटाबेस ड्राइवर उदाहरण
डेटाबेस DSN
MySQL `mysql:host=localhost;dbname=mydatabase`
PostgreSQL `pgsql:host=localhost;dbname=mydatabase`
SQLite `sqlite:/path/to/mydatabase.db`
Oracle `oci:dbname=//localhost:1521/mydatabase`

एक बार जब आपके पास DSN हो जाता है, तो आप PDO क्लास का एक नया इंस्टेंस बनाने के लिए इसका उपयोग कर सकते हैं:

```php <?php $host = 'localhost'; $dbname = 'mydatabase'; $username = 'myuser'; $password = 'mypassword';

try {

   $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   echo "कनेक्शन सफल!";

} catch (PDOException $e) {

   echo "कनेक्शन त्रुटि: " . $e->getMessage();

} ?> ```

इस उदाहरण में, हम MySQL डेटाबेस से कनेक्ट करने का प्रयास कर रहे हैं। `PDO::ATTR_ERRMODE` एट्रिब्यूट को `PDO::ERRMODE_EXCEPTION` पर सेट करने से PDO अपवादों को फेंक देगा यदि कोई त्रुटि होती है, जिससे त्रुटि हैंडलिंग आसान हो जाती है।

तैयार किए गए स्टेटमेंट का उपयोग

तैयार किए गए स्टेटमेंट SQL इंजेक्शन हमलों से बचाने के लिए एक महत्वपूर्ण सुरक्षा सुविधा है। तैयार किए गए स्टेटमेंट के साथ, आप SQL क्वेरी को पहले डेटा के साथ निष्पादित किए बिना तैयार करते हैं। फिर, आप डेटा को अलग से बाध्य करते हैं, जो डेटा को SQL कोड से अलग करता है।

```php <?php $pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "myuser", "mypassword"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT * FROM users WHERE username = :username AND password = :password"; $stmt = $pdo->prepare($sql);

$username = $_POST['username']; $password = $_POST['password'];

$stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password);

$stmt->execute();

$user = $stmt->fetch();

if ($user) {

   echo "लॉगिन सफल!";

} else {

   echo "अमान्य उपयोगकर्ता नाम या पासवर्ड।";

} ?> ```

इस उदाहरण में, हम एक तैयार किए गए स्टेटमेंट का उपयोग कर रहे हैं ताकि उपयोगकर्ता नाम और पासवर्ड के आधार पर उपयोगकर्ताओं को क्वेरी किया जा सके। `bindParam()` विधि का उपयोग डेटा को पैरामीटर से बांधने के लिए किया जाता है।

डेटा प्राप्त करना

तैयार किए गए स्टेटमेंट को निष्पादित करने के बाद, आप `fetch()` विधि का उपयोग करके परिणाम प्राप्त कर सकते हैं। `fetch()` विधि एक पंक्ति को एक एसोसिएटिव ऐरे के रूप में लौटाती है।

```php <?php $pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "myuser", "mypassword"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT * FROM users"; $stmt = $pdo->prepare($sql); $stmt->execute();

while ($row = $stmt->fetch()) {

   echo "उपयोगकर्ता नाम: " . $row['username'] . "
"; echo "ईमेल: " . $row['email'] . "
";

} ?> ```

आप सभी पंक्तियों को एक ही समय में प्राप्त करने के लिए `fetchAll()` विधि का भी उपयोग कर सकते हैं। `fetchAll()` विधि पंक्तियों की एक सरणी लौटाती है।

ट्रांजेक्शन का उपयोग

ट्रांजेक्शन डेटाबेस संचालन के एक समूह को एक साथ निष्पादित करने का एक तरीका है। यदि ट्रांजेक्शन में कोई भी ऑपरेशन विफल हो जाता है, तो सभी ऑपरेशन वापस रोल हो जाते हैं, जिससे डेटा की अखंडता सुनिश्चित होती है।

```php <?php $pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "myuser", "mypassword"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$pdo->beginTransaction();

try {

   $sql = "INSERT INTO accounts (username, balance) VALUES (:username, :balance)";
   $stmt = $pdo->prepare($sql);
   $stmt->execute(['username' => 'john', 'balance' => 100]);
   $sql = "UPDATE accounts SET balance = balance - :amount WHERE username = 'jane'";
   $stmt = $pdo->prepare($sql);
   $stmt->execute(['amount' => 50]);
   $pdo->commit();
   echo "ट्रांजेक्शन सफल!";

} catch (PDOException $e) {

   $pdo->rollBack();
   echo "ट्रांजेक्शन विफल: " . $e->getMessage();

} ?> ```

इस उदाहरण में, हम दो डेटाबेस संचालन को एक ट्रांजेक्शन में निष्पादित कर रहे हैं। यदि कोई भी ऑपरेशन विफल हो जाता है, तो `rollBack()` विधि का उपयोग करके ट्रांजेक्शन को वापस रोल कर दिया जाता है।

PDO के साथ उन्नत अवधारणाएं

PDO कई उन्नत अवधारणाओं का समर्थन करता है जो डेटाबेस संचालन को अधिक शक्तिशाली और लचीला बनाते हैं। इनमें शामिल हैं:

  • एट्रिब्यूट: PDO एट्रिब्यूट का उपयोग PDO ऑब्जेक्ट के व्यवहार को कॉन्फ़िगर करने के लिए किया जाता है। उदाहरण के लिए, आप `PDO::ATTR_ERRMODE` एट्रिब्यूट का उपयोग करके त्रुटि हैंडलिंग मोड सेट कर सकते हैं।
  • स्टेटमेंट हैंडलर: PDOStatement ऑब्जेक्ट का उपयोग तैयार किए गए स्टेटमेंट को प्रबंधित करने के लिए किया जाता है। स्टेटमेंट हैंडलर का उपयोग डेटा को बाध्य करने, स्टेटमेंट को निष्पादित करने और परिणाम प्राप्त करने के लिए किया जा सकता है।
  • लेनदेन: PDO ट्रांजेक्शन का समर्थन करता है, जो डेटाबेस संचालन के एक समूह को एक साथ निष्पादित करने का एक तरीका है।
  • ब्लॉब्स: PDO बड़े ऑब्जेक्ट्स (BLOBs) को संभालने का समर्थन करता है, जैसे कि छवियां और वीडियो।
  • कॉलबैक: PDO कॉलबैक फ़ंक्शन का उपयोग करने की क्षमता प्रदान करता है, जो आपको डेटाबेस संचालन के दौरान कस्टम लॉजिक निष्पादित करने की अनुमति देता है।

PDO और अन्य डेटाबेस एक्सटेंशन

PDO, PHP में डेटाबेस एक्सेस के लिए कई उपलब्ध विकल्पों में से एक है। अन्य एक्सटेंशन में शामिल हैं:

  • `mysql_*` फ़ंक्शन: ये पुराने फ़ंक्शन हैं जो अब उपयोग के लिए अनुशंसित नहीं हैं क्योंकि वे सुरक्षा संबंधी कमियों से ग्रस्त हैं।
  • `mysqli_*` फ़ंक्शन: ये MySQL डेटाबेस के साथ इंटरैक्ट करने के लिए एक बेहतर विकल्प हैं, लेकिन वे अभी भी PDO जितना लचीला नहीं हैं।
  • `pg_*` फ़ंक्शन: ये PostgreSQL डेटाबेस के साथ इंटरैक्ट करने के लिए उपयोग किए जाते हैं।

PDO इन सभी एक्सटेंशन से बेहतर है क्योंकि यह एक सुसंगत इंटरफ़ेस प्रदान करता है जो विभिन्न डेटाबेस सिस्टम के साथ काम करने की अनुमति देता है।

सुरक्षा संबंधी विचार

PDO का उपयोग करते समय, सुरक्षा संबंधी कुछ बातों पर ध्यान देना महत्वपूर्ण है:

  • तैयार किए गए स्टेटमेंट का उपयोग करें: SQL इंजेक्शन हमलों से बचाव के लिए हमेशा तैयार किए गए स्टेटमेंट का उपयोग करें।
  • डेटा को सैनिटाइज करें: डेटाबेस में डालने से पहले सभी उपयोगकर्ता इनपुट को सैनिटाइज करें।
  • न्यूनतम विशेषाधिकार सिद्धांत का पालन करें: डेटाबेस उपयोगकर्ता को केवल वही विशेषाधिकार दें जो उसे आवश्यक हैं।
  • कनेक्शन स्ट्रिंग को सुरक्षित रखें: डेटाबेस कनेक्शन स्ट्रिंग को सार्वजनिक रूप से उजागर न करें।

निष्कर्ष

PDO PHP में डेटाबेस के साथ इंटरैक्ट करने का एक शक्तिशाली और लचीला तरीका है। यह सुरक्षा, पोर्टेबिलिटी और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग सिद्धांतों का समर्थन करता है। PDO का उपयोग करके, आप सुरक्षित, कुशल और रखरखाव योग्य डेटाबेस एप्लिकेशन बना सकते हैं।

SQL डेटाबेस डिजाइन इंडेक्सिंग ऑप्टिमाइजेशन क्वेरी प्लानिंग सामान्यीकरण लेनदेन प्रबंधन त्रुटि हैंडलिंग सुरक्षा PHP सुरक्षा SQL इंजेक्शन तैयार किए गए स्टेटमेंट ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग MySQL PostgreSQL SQLite Oracle डेटाबेस माइग्रेशन ORM (ऑब्जेक्ट-रिलेशनल मैपिंग) तकनीकी विश्लेषण वॉल्यूम विश्लेषण बाइनरी ऑप्शन ट्रेडिंग रणनीति जोखिम प्रबंधन

अभी ट्रेडिंग शुरू करें

IQ Option पर रजिस्टर करें (न्यूनतम जमा $10) Pocket Option में खाता खोलें (न्यूनतम जमा $5)

हमारे समुदाय में शामिल हों

हमारे Telegram चैनल @strategybin से जुड़ें और प्राप्त करें: ✓ दैनिक ट्रेडिंग सिग्नल ✓ विशेष रणनीति विश्लेषण ✓ बाजार की प्रवृत्ति पर अलर्ट ✓ शुरुआती के लिए शिक्षण सामग्री

Баннер