2010-11-20 7 views
6

के साथ स्ट्रिंग मान डालें एक एस्ट्रोफ़े के साथ एक स्ट्रिंग पर विचार करें जिसे SQLite तालिका में डालने की आवश्यकता है।एस्ट्रोफ़े

INSERT INTO myTable (table_Title TEXT) VALUES ('world's') 

आप कैसे मार्कअप या INSERT बयान में मूल्य में apostrophe बच सकते हैं?

उत्तर

16

http://www.sqlite.org/c3ref/bind_blob.html

आप इस प्रकार का स्ट्रिंग के रूप में एक प्रश्न में सीधे इनपुट गुजर नहीं किया जाना चाहिए। न केवल यह एक उपद्रव है, यह एसक्यूएल इंजेक्शन हमलों के लिए भी कमजोर है, जो मैक ऐप के लिए बड़ी समस्या नहीं हो सकती है, लेकिन जब भी आपके पास अपने निपटान में तैयार वक्तव्य होते हैं तो यह एक बुरा विचार है। तैयार वक्तव्य सुनिश्चित करते हैं कि अंतर्निहित डेटाबेस वास्तविक, असम्बद्ध, इनपुट मान सुरक्षित रूप से पढ़ता है।

अपने विशिष्ट उदाहरण के लिए

(संक्षिप्तता/स्पष्टता के लिए त्रुटि हटाया जाँच):

sqlite3 *db; 
sqlite3_open("test.db", &db); 

// Create a prepared statement 
sqlite3_stmt *stmt; 
const char *sql = "INSERT INTO myTable (table_Title TEXT) VALUES (?)"; 
sqlite3_prepare_v2(db, sql, -1, &stmt, NULL); 

// Bind the parameter (safely) 
sqlite3_bind_text(stmt, 1, "world's", -1, NULL); 

// Execute the prepared statement 
sqlite3_step(stmt); 

(untested है, लेकिन आप अंदाजा हो)।

2

आप एक एकल apostrophe के बजाय '' का उपयोग कर सकते हैं। https://www.sqlite.org/faq.html#q14

:
उदाहरण डालने के लिए नहीं
Insert into table_name values('haven''t');

संदर्भ है

संबंधित मुद्दे