पीएचपी ट्यूटोरियल

पीएचपी होम पीएचपी परिचय पीएचपी इंस्टाल पीएचपी सिंटैक्स पीएचपी टिप्पणियाँ पीएचपी चर पीएचपी इको / प्रिंट पीएचपी डेटा प्रकार पीएचपी स्ट्रिंग्स पीएचपी नंबर पीएचपी गणित पीएचपी स्थिरांक पीएचपी ऑपरेटर्स पीएचपी अगर ... और ... Elseif पीएचपी स्विच पीएचपी लूप्स पीएचपी कार्य पीएचपी सरणियाँ पीएचपी सुपरग्लोबल्स पीएचपी रेगेक्स

पीएचपी फॉर्म

PHP फॉर्म हैंडलिंग PHP फॉर्म सत्यापन पीएचपी फॉर्म की आवश्यकता पीएचपी फॉर्म यूआरएल/ई-मेल PHP फॉर्म पूर्ण

पीएचपी उन्नत

पीएचपी दिनांक और समय पीएचपी शामिल करें पीएचपी फाइल हैंडलिंग PHP फ़ाइल खोलें/पढ़ें PHP फ़ाइल बनाएँ/लिखें पीएचपी फ़ाइल अपलोड पीएचपी कुकीज़ पीएचपी सत्र पीएचपी फिल्टर पीएचपी फिल्टर उन्नत PHP कॉलबैक फ़ंक्शंस पीएचपी JSON पीएचपी अपवाद

पीएचपी ओओपी

पीएचपी ओओपी क्या है पीएचपी क्लासेस/ऑब्जेक्ट्स पीएचपी कंस्ट्रक्टर पीएचपी विनाशक पीएचपी एक्सेस संशोधक पीएचपी विरासत पीएचपी स्थिरांक पीएचपी सार वर्ग पीएचपी इंटरफेस पीएचपी लक्षण PHP स्टेटिक तरीके पीएचपी स्टेटिक गुण पीएचपी नेमस्पेस पीएचपी Iterables

MySQL डेटाबेस

MySQL डेटाबेस MySQL कनेक्ट MySQL डीबी बनाएँ MySQL तालिका बनाएँ MySQL डेटा डालें MySQL अंतिम आईडी प्राप्त करें MySQL एकाधिक सम्मिलित करें MySQL तैयार MySQL डेटा का चयन करें MySQL कहाँ MySQL ऑर्डर बाय MySQL डेटा हटाएं MySQL अद्यतन डेटा MySQL सीमा डेटा

पीएचपी एक्सएमएल

पीएचपी एक्सएमएल पार्सर्स पीएचपी सिंपलएक्सएमएल पार्सर पीएचपी सिंपलएक्सएमएल - प्राप्त करें पीएचपी एक्सएमएल एक्सपैट पीएचपी एक्सएमएल डोम

पीएचपी - AJAX

AJAX परिचय अजाक्स पीएचपी AJAX डेटाबेस अजाक्स एक्सएमएल AJAX लाइव खोज AJAX पोल

पीएचपी उदाहरण

पीएचपी उदाहरण पीएचपी संकलक पीएचपी प्रश्नोत्तरी पीएचपी व्यायाम पीएचपी प्रमाणपत्र

पीएचपी संदर्भ

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

PHP MySQL तैयार वक्तव्य


एसक्यूएल इंजेक्शन के खिलाफ तैयार बयान बहुत उपयोगी हैं।


तैयार विवरण और बाध्य पैरामीटर

एक तैयार कथन एक विशेषता है जिसका उपयोग उच्च दक्षता के साथ बार-बार समान (या समान) SQL कथन निष्पादित करने के लिए किया जाता है।

तैयार बयान मूल रूप से इस तरह काम करते हैं:

  1. तैयार करें: एक SQL स्टेटमेंट टेम्प्लेट बनाया जाता है और डेटाबेस को भेजा जाता है। कुछ मानों को अनिर्दिष्ट छोड़ दिया जाता है, जिन्हें पैरामीटर (लेबल "?") कहा जाता है। उदाहरण: MyGuests Values ​​में INSERT करें(?, ?, ?)
  2. डेटाबेस SQL ​​स्टेटमेंट टेम्प्लेट पर क्वेरी ऑप्टिमाइज़ेशन को पार्स, संकलित और निष्पादित करता है, और परिणाम को निष्पादित किए बिना संग्रहीत करता है
  3. निष्पादित करें: बाद के समय में, एप्लिकेशन मानों को मापदंडों से बांधता है, और डेटाबेस स्टेटमेंट को निष्पादित करता है। एप्लिकेशन स्टेटमेंट को जितनी बार चाहे उतनी बार अलग-अलग वैल्यू के साथ निष्पादित कर सकता है

SQL कथनों को सीधे निष्पादित करने की तुलना में, तैयार किए गए कथनों के तीन मुख्य लाभ हैं:

  • तैयार किए गए कथन पार्सिंग समय को कम करते हैं क्योंकि क्वेरी पर तैयारी केवल एक बार की जाती है (हालाँकि कथन को कई बार निष्पादित किया जाता है)
  • बाउंड पैरामीटर सर्वर पर बैंडविड्थ को कम करते हैं क्योंकि आपको हर बार केवल पैरामीटर भेजने की आवश्यकता होती है, न कि पूरी क्वेरी
  • एसक्यूएल इंजेक्शन के खिलाफ तैयार बयान बहुत उपयोगी होते हैं, क्योंकि पैरामीटर मान, जो बाद में एक अलग प्रोटोकॉल का उपयोग करके प्रेषित होते हैं, को सही ढंग से बचने की आवश्यकता नहीं होती है। यदि मूल विवरण टेम्पलेट बाहरी इनपुट से प्राप्त नहीं होता है, तो SQL इंजेक्शन नहीं हो सकता है।

MySQLi . में तैयार विवरण

निम्न उदाहरण MySQLi में तैयार किए गए कथनों और बाध्य मापदंडों का उपयोग करता है:

उदाहरण (तैयार विवरण के साथ MySQLi)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "[email protected]";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

उपरोक्त उदाहरण से समझाने के लिए कोड लाइनें:

"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"

हमारे एसक्यूएल में, हम एक प्रश्न चिह्न (?) डालते हैं जहां हम एक पूर्णांक, स्ट्रिंग, डबल या ब्लॉब मान में प्रतिस्थापित करना चाहते हैं।

फिर, bind_param() फ़ंक्शन पर एक नज़र डालें:

$stmt->bind_param("sss", $firstname, $lastname, $email);

यह फ़ंक्शन पैरामीटर को SQL क्वेरी से बांधता है और डेटाबेस को बताता है कि पैरामीटर क्या हैं। "sss" तर्क उन डेटा के प्रकारों को सूचीबद्ध करता है जो पैरामीटर हैं। s वर्ण mysql को बताता है कि पैरामीटर एक स्ट्रिंग है।

तर्क चार प्रकारों में से एक हो सकता है:

  • मैं - पूर्णांक
  • डी - डबल
  • एस - स्ट्रिंग
  • ख - बूँद

हमारे पास प्रत्येक पैरामीटर के लिए इनमें से एक होना चाहिए।

MySQL को यह बताकर कि किस प्रकार के डेटा की अपेक्षा की जाए, हम SQL इंजेक्शन के जोखिम को कम करते हैं।

नोट: यदि हम बाहरी स्रोतों (जैसे उपयोगकर्ता इनपुट) से कोई डेटा सम्मिलित करना चाहते हैं, तो यह बहुत महत्वपूर्ण है कि डेटा को स्वच्छ और मान्य किया जाए।



पीडीओ . में तैयार विवरण

निम्नलिखित उदाहरण पीडीओ में तैयार बयानों और बाध्य मापदंडों का उपयोग करता है:

उदाहरण (तैयार विवरण के साथ पीडीओ)

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  // prepare sql and bind parameters
  $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
  VALUES (:firstname, :lastname, :email)");
  $stmt->bindParam(':firstname', $firstname);
  $stmt->bindParam(':lastname', $lastname);
  $stmt->bindParam(':email', $email);

  // insert a row
  $firstname = "John";
  $lastname = "Doe";
  $email = "[email protected]";
  $stmt->execute();

  // insert another row
  $firstname = "Mary";
  $lastname = "Moe";
  $email = "[email protected]";
  $stmt->execute();

  // insert another row
  $firstname = "Julie";
  $lastname = "Dooley";
  $email = "[email protected]";
  $stmt->execute();

  echo "New records created successfully";
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;
?>