Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQL क्वेरी में सिंगल कोट्स

mysql_real_escape_string() और sql इंजेक्शन पहले ही उल्लेख किया जा चुका है।
लेकिन अभी आपकी स्क्रिप्ट (कड़ी मेहनत से) को डेटा/पैरामीटर के साथ sql स्टेटमेंट को मिलाना है और अगले चरण में MySQL सर्वर को स्टेटमेंट से डेटा को अलग करना होगा।
का उपयोग करना (सर्वर-साइड) तैयार विवरण आपकी क्वेरी के दोनों "भाग" अलग-अलग भेजे जाते हैं और एसक्यूएल पार्सर (आपके MySQL सर्वर का) कभी भी "भ्रमित" नहीं हो सकता है जहां कथन समाप्त होता है और डेटा शुरू होता है।

php-mysql मॉड्यूल तैयार बयान नहीं जानता लेकिन php-mysqli और PDO करो।

$pdo = new PDO('mysql:host=localhost;dbname=test', '...', '...'); 
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$stmt = $pdo->prepare('
  UPDATE
    Videos
  SET
    Title=:title ,
    Preacher=:preacher ,
    Date=:date ,
    Service=:service ,
    File=:file ,
    Description=:description
  WHERE
    id=:id
');
$stmt->bindParam(':title', $_POST['title']);
$stmt->bindParam(':preacher', $_POST['preacher']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->bindParam(':service', $_POST['service']);
$stmt->bindParam(':file', $_POST['file']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':id', $_GET['id']); // really _GET?
$stmt->execute();

यदि आप केवल एक ऑपरेशन के लिए $stmt का उपयोग करते हैं तो बहुत अधिक ब्लोट लग सकता है। लेकिन विचार करें कि अन्यथा आपको प्रत्येक पैरामीटर के लिए mysql_real_escape_string() को कॉल करना होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संपूर्ण MySQL डेटाबेस के लिए सभी विदेशी कुंजी बाधाओं को देखें

  2. PHP में हाइबरनेट के समान कुछ भी?

  3. मैसकल त्रुटि:टेबलस्पेस को डंप करने का प्रयास करते समय एक निश्चित ('mysql.infoschema'@'localhost') के रूप में निर्दिष्ट उपयोगकर्ता मौजूद नहीं है

  4. कॉलम नामों को लोअरकेस में बदलने के लिए एक MYSQL स्क्रिप्ट

  5. एकाधिक फ़िल्टर के साथ एक आरईएसटी एपीआई कैसे डिजाइन करना सबसे अच्छा है?