MySQL Prepared Statements
Prepared Statements SQL queries को सुरक्षित (secure), तेज़ (faster), और stable बनाते हैं। PHP में prepared statements का उपयोग SQL Injection से बचने, user inputs को सुरक्षित तरीके से execute करने और repeated queries को optimize करने के लिए किया जाता है। यह MySQLi और PDO दोनों में उपलब्ध हैं।
- SQL Injection रोकता है
- Dynamic data bind करने का safest तरीका
- Repeated queries performance बढ़ाती हैं
- Form data, login system, search system में अनिवार्य
Prepared Statements कैसे काम करते हैं?
- पहले query का structure define होता है (placeholders के साथ)।
- Values अलग से bind की जाती हैं (SQL string से पूरी तरह अलग)।
- Query execute होती है — user input होने पर भी 100% safe।
Basic Prepared Statement Structure
Prepared Statement कब अनिवार्य है?
- जब भी user input query में आए (form, login, search)
- Complex conditions या multiple parameters हों
- Public-facing web applications में हमेशा prepared statements use करें
MySQLi Procedural Prepared Statement
यह तरीका MySQLi procedural mode में सबसे secure और recommended है।
Data Fetch Using Prepared Statement (MySQLi)
Prepared statements SELECT queries के साथ भी सुरक्षित तरीके से काम करते हैं:
MySQLi Prepared Statement – Type Specifiers
- i → integer
- s → string
- d → double/float
- b → blob (binary)
PDO Prepared Statements
PDO prepared statements का उपयोग सबसे आसान और flexible माना जाता है। यह विभिन्न database systems को support करता है।
PDO Prepared INSERT Example
PDO Named Placeholder Example
PDO named placeholders code को और readable बनाते हैं:
PDO Prepared SELECT
Why Prepared Statements Are Must?
- SQL Injection Protection: Hackers कभी भी injection नहीं कर पाएंगे।
- Performance: same query बार-बार run होने पर MySQL internal optimization करता है।
- Safe User Input: name, email, search input जैसी values सुरक्षित रहती हैं।
- Cleaner Code: SQL और data अलग रहते हैं।
Common Mistakes Developers Make
- गलती: User input को सीधे query में डालना
Solution: हमेशा prepared statements use करें। - गलती: Wrong data type binding
Solution: सही specifier का उपयोग करें (i, s, d, b)। - गलती: Named parameters और array keys mismatch
Solution: Query के placeholder और execute array key match करें।
Best Practices
- Insert, update, delete सभी queries में prepared statements use करें।
- Form input को हमेशा prepared statement में bind करें।
- Error handling enable करें:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - Production code में user input sanitize करें।
Conclusion
Prepared Statements PHP और MySQL में सुरक्षित coding का सबसे महत्वपूर्ण हिस्सा हैं। ये queries को injection से बचाते हैं, performance बढ़ाते हैं और code को clean और maintainable रखते हैं। चाहे आप MySQLi उपयोग करें या PDO — prepared statements हमेशा recommended हैं।
