PDO vs MySQLi
MySQL से बात करने के दो तरीके
PHP आपको MySQL database से जुड़ने के दो built-in तरीके देती है: PDO और MySQLi। दोनों एक ही काम कर सकते हैं — connect, queries चलाना, prepared statements इस्तेमाल करना। चुनाव तय करता है आपका code कैसा दिखे और कितना portable हो। अंतर समझना आपको अपने project के लिए सही चुनने में मदद करता है।
हर एक से connect करना
PDO connection:
<?php
$pdo = new PDO("mysql:host=localhost;dbname=school", "root", "");
?>
MySQLi connection:
<?php
$mysqli = new mysqli("localhost", "root", "", "school");
?>
दोनों उसी database से connection खोलते हैं; बस syntax अलग है। PDO एक connection string इस्तेमाल करता है; MySQLi हिस्सों को अलग arguments की तरह भेजता है।
दोनों में prepared statements
PDO साफ़ named placeholders support करता है:
<?php
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->execute([":email" => "aman@site.com"]);
?>
MySQLi ? इस्तेमाल करता है और position से bind करता है:
<?php
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
?>
दोनों SQL injection से बचाते हैं। PDO के named placeholders लंबी queries में अक्सर पढ़ना आसान होते हैं।
मुख्य अंतर
| बात | PDO | MySQLi |
|---|---|---|
| Databases | कई (MySQL, SQLite वग़ैरह) | सिर्फ़ MySQL |
| Named placeholders | हाँ (:email) | नहीं (सिर्फ़ ?) |
| शैली | एक जैसा API | MySQL-specific |
| Prepared statements | हाँ | हाँ |
कौन-सा इस्तेमाल करें
ज़्यादातर नए projects के लिए PDO सुझाया गया विकल्प है: यह database-independent है, साफ़ और एक जैसा API रखता है, और named placeholders support करता है। MySQLi सिर्फ़ तब चुनिए जब पक्का हो कि project हमेशा MySQL इस्तेमाल करेगा और आपको इसकी शैली पसंद है। किसी भी हाल में, हमेशा prepared statements इस्तेमाल कीजिए।
आम गलतियाँ
- PDO और MySQLi मिलाना। एक चुनिए और पूरे में इस्तेमाल कीजिए — ये आपस में बदले नहीं जा सकते।
- Prepared statements छोड़ना। दोनों APIs को SQL injection रोकने के लिए इनकी ज़रूरत है।
- MySQLi चुनकर फिर दूसरा database चाहिए होना। बाद में switch करने का मतलब code दोबारा लिखना।
- Error handling भूलना। exceptions/errors on कीजिए ताकि development में failures दिखें।
सारांश
- PDO और MySQLi PHP के MySQL से जुड़ने के दो तरीके हैं।
- PDO कई databases के साथ चलता है और named placeholders support करता है।
- MySQLi सिर्फ़ MySQL के साथ चलता है।
- दोनों prepared statements support करते हैं — हमेशा इस्तेमाल कीजिए।
- नए projects के लिए PDO आमतौर पर बेहतर default है।
आगे, सुरक्षित connect और query कीजिए PHP MySQL connection में, या data operations बनाइए PHP CRUD से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
PDO और MySQLi में मुख्य अंतर क्या है?
:email जैसे named placeholders भी support करता है, जो कई developers को साफ़ लगते हैं।नए project के लिए PDO और MySQLi में क्या बेहतर है?
क्या दोनों prepared statements support करते हैं?
Named placeholders क्या हैं?
:email जैसे named placeholders आपको query में हर value को label करने देते हैं, anonymous ? निशानों के बजाय। PDO इन्हें support करता है; classic MySQLi सिर्फ़ ?। Named वाले लंबी queries पढ़ना आसान करते हैं।