Financial Calculator

Calculate loans, SIP, PPF, NPS & more!

Financial Calculator

Calculate loans, SIP, PPF, NPS & more!

MySQL Prepared

PHP

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 कैसे काम करते हैं?

  1. पहले query का structure define होता है (placeholders के साथ)।
  2. Values अलग से bind की जाती हैं (SQL string से पूरी तरह अलग)।
  3. Query execute होती है — user input होने पर भी 100% safe।

Basic Prepared Statement Structure

SQL: Prepared Structure
INSERT INTO students (name, class) VALUES (?, ?)

// ? को ही placeholders कहते हैं

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 है।

उदाहरण: MySQLi Procedural (Prepared Insert)
 <?php
  $conn = mysqli_connect("localhost", "root", "", "school");
  $stmt = mysqli_prepare($conn, "INSERT INTO students (name, class, city) VALUES (?, ?, ?)");
  mysqli_stmt_bind_param($stmt, "sis", $name, $class, $city);
  $name = "Aman";
  $class = 10;
  $city = "Delhi";
  mysqli_stmt_execute($stmt);
  echo "Record Inserted Successfully";
  mysqli_stmt_close($stmt);
  mysqli_close($conn);
 ?>

Data Fetch Using Prepared Statement (MySQLi)

Prepared statements SELECT queries के साथ भी सुरक्षित तरीके से काम करते हैं:

उदाहरण: MySQLi Prepared SELECT
 <?php
  $conn = mysqli_connect("localhost", "root", "", "school");
  $stmt = mysqli_prepare($conn, "SELECT * FROM students WHERE class = ?");
  mysqli_stmt_bind_param($stmt, "i", $class);
  $class = 10;
  mysqli_stmt_execute($stmt);
  $result = mysqli_stmt_get_result($stmt);
  while ($row = mysqli_fetch_assoc($result)) {
    echo $row['name'] . "<br>";
  }
  mysqli_stmt_close($stmt);
  mysqli_close($conn);
 ?>

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 Prepared (INSERT)
 <?php
  $pdo = new PDO("mysql:host=localhost;dbname=school", "root", "");
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $pdo->prepare("INSERT INTO students (name, class, city) VALUES (?, ?, ?)");
  $stmt->execute(["Riya", 9, "Mumbai"]);
  echo "Record Inserted";
 ?>

PDO Named Placeholder Example

PDO named placeholders code को और readable बनाते हैं:

PDO Named Parameters
  $stmt = $pdo->prepare("UPDATE students SET city = :city WHERE id = :id");
  $stmt->execute([":city" => "Pune", ":id" => 2]);

PDO Prepared SELECT

उदाहरण: PDO Prepared SELECT
  $stmt = $pdo->prepare("SELECT * FROM students WHERE class = ?");
  $stmt->execute([10]);
  $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
  foreach ($data as $row) {
    echo $row['name'] . " - " . $row['city'] . "<br>";
  }

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 हैं।

Article By: Brajlal Prasad
Created on: 05 Nov 2025  10  Views
 Print Article
Report Error

If you want to report an error, or any suggestion please send us an email to [email protected]

Financial Calculator

Financial Calculator

Take control of your finances with our powerful Financial Calculator app—calculate loans, SIP, PPF, NPS and more all in one place!

Play Store