Using prepared statements and parameterized queries In Hindi
पीएचपी प्रोग्रामिंग मे किसी भी प्रकार के मैन्युअल एसक्यूएल डेटाबेस मालिसियस जावास्क्रिप्ट सोर्स कोड इंजेक्शन एक्टिविटीज को स्टॉप करने और मौजूदा वेब एप्प्स या वेबसाइट बैकेंड डेटाबेस क्वेरीज़ को सिक्योर फॉर्मेट में मैनेज और प्रोसेस करने के लिए प्रेपरेड़ स्टेटमेंट और पैरामीटराइज़्ड क्वेरीज़ एक एसेंशियल प्रोसेस या मेथड हैं। जहा ये मेथड्स एसक्यूएल डेटाबेस सोर्स कोड वेब विजिटर को यूजर इनपुट प्रोसेस से सेपरेट कर प्रोसेस करती हैं. जो की मौजूदा या किसी डेटाबेस क्वेरी के पार्ट के रूप में किसी भी प्रकार के मालिसियस इनपुट सोर्स कोड को बैकेंड में रन या एक्सेक्यूट होने से स्टॉप किया जा सके।

What are prepared statements and parameterized queries in PHP?
What is a prepared statement? – किसी भी डेटाबेस सिस्टम में एक प्रेपरेड़ स्टेटमेंट कई डेटाबेस मैनेजमेंट सिस्टम (DBMS) की एक स्पेशल ऐट्रिब्यूट्स फीचर्स है, जिसमे एक एसक्यूएल डेटाबेस में क्वेरी पूर्व-संकलित पहले से होती है, और एक सिस्टम डिफाइन टेम्पलेट फॉर्मेट के रूप में स्टोर होती है। जहा इस एसक्यूएल डेटाबेस डेटाबेस क्वेरी में टेम्पलेट में यूजर इनपुट के लिए अलग अलग प्लेसहोल्डर डिफाइन किए गए होते हैं, जिन्हें किसी भी सिस्टम में एक्सेक्यूशन के पहले स्टेटेमेंट से सिक्योर आर्डर में ऐड किया जाता है।
What is a parameterized query? – यह एसक्यूएल डेटाबेस में क्वेरी में यूजर इनपुट वैल्यू के लिए यूज़ किए गए प्लेसहोल्डर के यूज़ रेफ़्रेन्स को इंडीकेट करता है। जब सिस्टम में कोई डेटाबेस क्वेरी एक्सेक्यूट होती है. तो एसक्यूएल डेटाबेस इंजन आटोमेटिक आर्डर में क्वेरी वैल्यू को इन्सर्ट करता है, यह प्रोसेस में पहले तय करते हुए कि इन्हे डेटा के रूप में ट्रीट किया जाए न कि एक्सेक्यूशन कम्पेटिबल सोर्स कोड के रूप में ट्रीट किया जाए।
Why use prepared statements and parameterized queries in PHP?
- Security – डेटाबेस में प्रेपरेड़ स्टेटमेंट का फर्स्ट एडवांटेज सिक्योरिटी फीचर्स है। डेटाबेस में प्रेपरेड़ स्टेटमेंट को अप्लाई करके, यूजर इनपुट को एसक्यूएल क्वेरी के पार्ट के रूप में नहीं बल्कि एक पैरामीटर के रूप में ट्रीट किया जाता है, जिससे की सिक्योर सिस्टम डेटाबेस में किसी भी प्रकार के एसक्यूएल जावास्क्रिप्ट सोर्स कोड इंजेक्शन अटैक रिस्क को स्टॉप किया जा सकता है।
- Efficiency – याद रहे एसक्यूएल क्वेरी पहले से ही पूर्व-संकलित होती है, इस वजह से डेटाबेस सर्वर मल्टीप्ल यूजर इनपुट वैल्यू के साथ प्रेपरेड़ स्टेटमेंट को मल्टीप्ल टाइम री-यूज़ कर सकता है।
- Clearer code – डेटाबेस सिस्टम में प्रेपरेड़ स्टेटमेंट यूजर सोर्स कोड को अधिक रीडेबल और इजी मैंटेनैंस कम्पेटिबल क्रिएटकरते हैं, स्पेशली जब कम्प्लेक्स एसक्यूएल डेटाबेस क्वेरीज़ के साथ काम करते समय इसे किया जाता है।
Using prepared statements and parameterized queries with PHP (MySQLi).
Example of inserting data into a database.
तो चलिए पीएचपी प्रोग्रामिंग मे डेटाबेस में यूजर इनपुट डेटा को इन्सर्ट करने के लिए प्रेपरेड़ स्टेटमेंट और पैरामीटरयुक्त क्वेरीज़ का यूज़ कैसे करे।
Step 1 – First, create a connection to the SQL database.
<?php
$servername = “localhost”;
$username = “root”;
$password = “”;
$dbname = “testdatabase”;
// here we Create a database connection
$conn = new mysqli($servername, $username, $password, $dbname);
// here it Check the databae connection
if ($conn->connect_error) {
die(“unsuccessful database Connection – ” . $conn->connect_error);
}
?>
Step 2 – Preparing the statement to insert new data into the SQL database.
यहाँ माना की आपके पास पहले ही एम्प्लॉई नाम, ईमेल, और ऐज कॉलम वाली एक एम्प्लॉई डेटाबेस टेबल है।
<?php
// here we define employee table User inputs
$emp_name = $_POST[’emp_name’];
$email = $_POST[’email’];
$age = $_POST[‘age’];
// here we Prepare the SQL statement with employee table existing placeholders [?]
$statement = $conn->prepare(“INSERT INTO employee (emp_name, email, age) VALUES (?, ?, ?)”);
// here we Check if the statement was prepared successfully or not
if ($statement === false) {
die(“Display Error when preparing statement – ” . $conn->error);
}
// here it Bind parameters to the employee table placeholders data types: s = string, i = integer
$statement->bind_parameter(“ssi”, $emp_name, $email, $age);
// here it Execute the prepared statement
if ($statement->execute()) {
echo “New employee table record created successfully”;
} else {
echo “Display database table Error ” . $statement->error;
}
// here we Close the statement and connection activities
$statement->close();
$conn->close();
?>
Explanation of preparing the statement.
- $conn->prepare() – यह प्रोग्राम में एक एसक्यूएल क्वेरी टेम्प्लेट को तैयार किया जाएगा। जिसमे एम्प्लॉई टेबल प्लेसहोल्डर्स (?) उन टेबल वैल्यू को डिस्प्ले करता हैं, जिन्हें बाद में डेटाबेस में बाइंड किया जाएगा।
- $stmt->bind_param() – यह स्टेटमेंट मौजूदा डेटाबेस में एम्प्लॉई टेबल वेरिएबल्स को प्लेसहोल्डर्स से बाइंड करता है। इसी में सेकंड लॉजिक एक स्ट्रिंग फॉर्मेट है. जो मौजूदा डेटाबेस पैरामीटर्स के डाटा टाइप को इंडीकेट करता है. जैसे,
- टेबल स्ट्रिंग्स प्लेसहोल्डर के लिए “s” जैसे, $emp_name, $email डाटा टाइप डिफाइन किया गया है।
- इन्टिजर एम्प्लॉई टेबल डेटाबेस के लिए “i” जैसे, $age डाटा टाइप डिफाइन किया गया है।
- $statement->execute() – यह कोड दिए गए डेटाबेस टेबल वैल्यू के साथ क्वेरी को एक्सेक्यूट करता है।
Use of prepared statements and parameterized queries (PDO) in PHP programming.
पीएचपी प्रोग्रामिंग मे पीडीओ (पीएचपी डेटा ऑब्जेक्ट्स) एक और पॉपुलर मौजूदा बैकेंड डेटाबेस एक्सेस प्रोसेसिंग या मेथड है, जो एसक्यूएल डेटाबेस में प्रेपरेड़ स्टेटमेंट का सपोर्ट प्रोवाइड करता है। पीडीओ वर्त्तमान समय में पॉपुलर कई डेटाबेस सिस्टम जैसे, माईएसक्यूल, पोस्टग्रेएसक्यूल, एसक्यूललाइट डेटाबेस सॉफ्टवेयर के साथ इंटीग्रेट हो कर काम करता है।
Example of inserting data into a database table using PDO in PHP programming.
Step 1 – First, create a new connection to an existing database table.
<?php
$dsn = “mysql:host=localhost;dbname=testdatabase”;
$username = “root”;
$password = “”;
// here we Create a PDO instance
try {
$pdo = new PDO($dsn, $username, $password);
// here we Set PDO error mode to exception
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo “unsuccessful database table Connection ” . $e->getMessage();
}
?>
Step 2 – Prepare and execute the database query
<?php
// here we define employee table User input
$emp_name = $_POST[’emp_name’];
$email = $_POST[’email’];
$age = $_POST[‘age’];
// here we Prepare the SQL statement with employee database table placeholders (?)
$statement = $pdo->prepare(“INSERT INTO employee (emp_name, email, age) VALUES (:emp_name, :email, :age)”);
// Bind the user input to the placeholders
$statement->bindParameter(‘:emp_name’, $emp_name);
$statement->bindParameter(‘:email’, $email);
$statement->bindParameter(‘:age’, $age, PDO::PARAM_INT);
// here we Execute the database table query
if ($statement->execute()) {
echo “New database table record created successfully”;
} else {
echo “database record insert Error “ . $statement->errorInfo()[2];
}
?>
Explanation of prepare and execute database query.
- $pdo->prepare() – इस प्रोग्राम में नेम्ड एम्प्लॉई डेटाबेस टेबल प्लेसहोल्डर्स जैसे, :emp_name, :email, :age के साथ एक एसक्यूएल क्वेरी को तैयार करता है।
- bindParameter() – यह मौजूदा डेटाबेस कनेक्शन में यूजर इनपुट को नेम्ड प्लेसहोल्डर्स से बाइंड करता है। यह आपको डेटाटाइप जैसे, इन्टिजर टेबल फील्ड के लिए PDO::PARAM_INT डिफाइन करने की परमिशन प्रोवाइड करता है।
- $statement->execute() – यह स्टेटेमेंट बाउंड डेटाबेस टेबल पैरामीटर्स के साथ तैयार स्टेटमेंट को एक्सेक्यूट करता है।
Selecting data with prepared statements in a PHP database.
पीएचपी प्रोग्राम में डेटाबेस से डेटा प्राप्त करते समय, हम यूजर इनपुट को सिक्योर आर्डर में मैनेज करने के लिए तैयार स्टेटमेंट्स को भी यूज़ कर सकते हैं।
Example of selecting data using MySQLi.
<?php
// here Assume the employee is searching for a user by email
$email = $_POST[’email’];
// here we Prepare the SQL statement with a employee table placeholder
$statement = $conn->prepare(“SELECT * FROM employee WHERE email = ?”);
// here it Bind the database table parameter
$statement->bind_parameter(“s”, $email); // “s” indicates the parameter is a string data type format
// here it Execute the query
$statement->execute();
// here it Get the result
$result = $statement->get_result();
// here it Fetch the employee database data
if ($row = $result->fetch_assoc()) {
echo “emp_Name – ” . $row[’emp_name’] . “<br>”;
echo “Email – ” . $row[’email’] . “<br>”;
echo “Age – ” . $row[‘age’] . “<br>”;
} else {
echo “No employee result found with this email.”;
}
// here we Close the statement and database table connection
$statement->close();
$conn->close();
?>
Example of selecting data using PDO in a PHP database.
<?php
// here we Assume the employee is searching for a employee by email
$email = $_POST[’email’];
// here Prepare the SQL statement with a employee database table placeholder
$statement = $pdo->prepare(“SELECT * FROM employee WHERE email = :email”);
// here it Bind the database table parameter
$statement->bindParameter(‘:email’, $email, PDO::PARAM_STR);
// here it Execute the database query
$statement->execute();
// here it Fetch the database table result
$row = $statement->fetch(PDO::FETCH_ASSOC);
if ($row) {
echo “emp_Name – ” . $row[’emp_name’] . “<br>”;
echo “Email – ” . $row[’email’] . “<br>”;
echo “Age – ” . $row[‘age’] . “<br>”;
} else {
echo “No employee result found with this email.”;
}
?>
Summary of prepared statements and parameterized queries.
- Prepared statements – यहाँ प्रेपरेड़ स्टेटमेंट एसक्यूएल क्वेरी एक बार क्रिएट की जाती है, और यूजर इसे जरूरत के अनुसार मल्टीप्ल इनपुट वैल्यूज के साथ री-यूज़ कर सकते हैं।
- Parameterized queries – इसमें डेटाबेस यूजर इनपुट के लिए एसक्यूएल क्वेरी में टेबल प्लेसहोल्डर को यूज़ करें, जिससे यूजर इनपुट वैल्यू एक्सेक्यूशन कम्पेटिबल सोर्स कोड के बजाय डेटा मानकर मैन्युअल एसक्यूएल सोर्स कोड इंजेक्शन को स्टॉप किया जा सके।
- Security – किसी भी प्रकार के एसक्यूएल डेटाबेस में जावास्क्रिप्ट सोर्स कोड इंजेक्शन को अवॉइड करने के लिए हमेशा प्रेपरेड़ स्टेटमेंट को यूज़ करें। याद रहे यूजर इनपुट को एसक्यूएल क्वेरी में डायरेक्ट एम्बेड न करें।
- PDO vs. MySQLi – पीएचपी प्रोग्रामिंग में पीडीओ और माईएसक्यूएली दोनों प्रेपरेड़ स्टेटमेंट को सपोर्ट करते हैं, जबकि दोनों में पीडीओ पीएचपी डेटाबेस कनेक्शन एक बेहतर फ्लेक्सिबल एनवायरनमेंट प्रोवाइड करता है. यह एक ही समय में मल्टीप्ल डेटाबेस सिस्टम को सपोर् करता है।

