আমি মাইএসকিউএলে এমন কোনও মান কীভাবে সন্নিবেশ করব যা একক বা ডাবল উদ্ধৃতি সমন্বিত থাকে। অর্থাত্
This is Ashok's Pen.
একক উদ্ধৃতি সমস্যা তৈরি করবে। অন্যান্য পালানোর অক্ষর থাকতে পারে।
আপনি কীভাবে তথ্য সঠিকভাবে সন্নিবেশ করবেন?
আমি মাইএসকিউএলে এমন কোনও মান কীভাবে সন্নিবেশ করব যা একক বা ডাবল উদ্ধৃতি সমন্বিত থাকে। অর্থাত্
This is Ashok's Pen.
একক উদ্ধৃতি সমস্যা তৈরি করবে। অন্যান্য পালানোর অক্ষর থাকতে পারে।
আপনি কীভাবে তথ্য সঠিকভাবে সন্নিবেশ করবেন?
উত্তর:
বেশ সহজভাবে লিখুন:
SELECT 'This is Ashok''s Pen.';
সুতরাং স্ট্রিংয়ের ভিতরে, প্রতিটি একক উদ্ধৃতি তাদের দুটি দিয়ে প্রতিস্থাপন করুন।
বা:
SELECT 'This is Ashok\'s Pen.'
এটি এড়িয়ে চলুন =)
'পলায়ন চরিত্র। সুতরাং আপনার স্ট্রিংটি হওয়া উচিত:
এটি অশোকের কলম
আপনি যদি কিছু ফ্রন্ট-এন্ড কোড ব্যবহার করছেন তবে সঞ্চিত পদ্ধতিতে ডেটা প্রেরণের আগে আপনাকে স্ট্রিং প্রতিস্থাপন করতে হবে।
উদাহরণস্বরূপ, সি # তে আপনি করতে পারেন
value = value.Replace("'", "''");
এবং তারপরে সঞ্চিত পদ্ধতিতে মান পাস করুন।
''
(দুটি একক উদ্ধৃতি) একটি একক-উদ্ধৃতি চরিত্র "পালানোর" জন্য অনুমোদিত একটি বিশেষ বিকল্প।
"মাইএসকিউএল-এর অক্ষরগুলি কীভাবে এড়াতে হবে " এ আমার উত্তর দেখুন
আপনি মাইএসকিউএল এর সাথে কথা বলার জন্য যে লাইব্রেরি ব্যবহার করছেন তাতে একটি বেঁচে থাকার ফাংশন থাকবে, যেমন পিএইচপিতে আপনি mysqli_real_escape_string বা PDO :: উদ্ধৃতি ব্যবহার করতে পারেন
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
,।
যদি আপনি প্রস্তুত বিবৃতি ব্যবহার করেন, ড্রাইভার কোনও পালানো পরিচালনা করবে। উদাহরণস্বরূপ (জাভা):
Connection conn = DriverManager.getConnection(driverUrl);
conn.setAutoCommit(false);
PreparedStatement prepped = conn.prepareStatement("INSERT INTO tbl(fileinfo) VALUES(?)");
String line = null;
while ((line = br.readLine()) != null) {
prepped.setString(1, line);
prepped.executeQuery();
}
conn.commit();
conn.close();
এই কোডটি ব্যবহার করুন:
<?php
$var = "This is Ashok's Pen.";
mysql_real_escape_string($var);
?>
এটি আপনার সমস্যার সমাধান করবে, কারণ ডাটাবেস কোনও স্ট্রিংয়ের বিশেষ অক্ষরগুলি সনাক্ত করতে পারে না।
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
,।
এটি করার আরও একটি উপায় আছে যা আপনার দৃষ্টিভঙ্গির উপর নির্ভর করে নিরাপদ বা নাও হতে পারে। এটা তোলে মাইএসকিউএল 5.6 বা পরবর্তী একটি নির্দিষ্ট স্ট্রিং ফাংশন ব্যবহারের কারণ প্রয়োজন: FROM_BASE64
।
ধরা যাক আপনি এই বার্তাটি sertোকাতে চান:
"আহ," প্রায় হেডলেস নিক একটি মার্জিত হাতটি দুলালেন, "কোন গুরুত্বের বিষয় নয় ... ... আমি সত্যিই যোগ দিতে চাইনি বলে মনে হয় না। ... ভেবেছিলাম আমি আবেদন করতাম, তবে দৃশ্যত আমি প্রয়োজনীয়তা পূরণ করি না" '- "
এই উক্তিতে একক- এবং ডাবল-কোট রয়েছে এবং মাইএসকিউএল প্রবেশ করানো একটি সত্যিকারের ব্যথা হবে। যদি আপনি এটি কোনও প্রোগ্রাম থেকে সন্নিবেশ করিয়ে থাকেন তবে কোটস ইত্যাদি রক্ষা করা সহজ But তবে যদি আপনাকে এটি এসকিউএল স্ক্রিপ্টে রাখতে হয় তবে আপনাকে পাঠ্য সম্পাদনা করতে হবে (উদ্ধৃতিগুলি এড়ানোর জন্য) যা ত্রুটির প্রবণ হতে পারে বা শব্দ মোড়ানো ইত্যাদির প্রতি সংবেদনশীল
পরিবর্তে, আপনি পাঠ্যটি বেস 64-এনকোড করতে পারেন, সুতরাং আপনার কাছে একটি "পরিষ্কার" স্ট্রিং রয়েছে:
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD
JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS
MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG
dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ
SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj
JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr
Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn
VkSE1uSUMwaUlBPT0K
বেস 64-এনকোডিং সম্পর্কে কিছু নোট:
base64
হন এবং মাইএসকিউএল অক্ষর এনকোডিং কী তা নিয়ে একমত (আমি ইউটিএফ -8 প্রস্তাব দিই)।এখন, এটি মাইএসকিউএল এ লোড করতে:
INSERT INTO my_table (text) VALUES (FROM_BASE64('
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD
JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS
MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG
dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ
SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj
JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr
Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn
VkSE1uSUMwaUlBPT0K
'));
এটি কোনও অভিযোগ ছাড়াই sertোকানো হবে এবং স্ট্রিংয়ের ভিতরে আপনাকে কোনও পাঠ্য ম্যানুয়ালি-এড়িয়ে যেতে হবে না।
পিএইচপি-তে, mysqli_real_escape_string ব্যবহার করুন ।
পিএইচপি ম্যানুয়াল থেকে উদাহরণ:
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");
$city = "'s Hertogenbosch";
/* this query will fail, cause we didn't escape $city */
if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
printf("Error: %s\n", mysqli_sqlstate($link));
}
$city = mysqli_real_escape_string($link, $city);
/* this query with escaped $city will work */
if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
printf("%d Row inserted.\n", mysqli_affected_rows($link));
}
mysqli_close($link);
?>
আপনি যদি (')
ডাটাবেসে অ্যাডাস্ট্রোফ রাখতে চান তবে নীচের কোডটি ব্যবহার করুন:
$new_value = str_replace("'","\'", $value);
$new_value
ডাটাবেসে সংরক্ষণ করতে পারেন।
$var = mysqli_real_escape_string($conn, $_POST['varfield']);
আপনি যদি পিএইচপি ব্যবহার করে থাকেন তবে কেবল সংযোজন () ফাংশনটি ব্যবহার করুন।
প্রোগ্রামেটিক অ্যাক্সেসের জন্য, আপনি স্থানধারক ব্যবহার করতে পারেন জন্য স্বয়ংক্রিয়ভাবে অনিরাপদ অক্ষরগুলি থেকে বাঁচতে ।
পার্ল ডিবিআইতে, উদাহরণস্বরূপ, আপনি এটি ব্যবহার করতে পারেন:
my $string = "This is Ashok's pen";
$dbh->do("insert into my_table(my_string) values(?)",undef,($string));
হয় অ্যাডল্লেস () অথবা মাইএসকিএল_আরাল_সেস্কেপ_স্ট্রিং () ব্যবহার করুন।
This, mysql_real_escape_string() extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
,।
আমি যেভাবে করি, ডেলফি ব্যবহার করে:
স্ট্রিং "পালাতে":
TheString=" bla bla bla 'em some more apo:S 'em and so on ";
সমাধান:
StringReplace(TheString, #39,'\'+#39, [rfReplaceAll, rfIgnoreCase]);
ফলাফল:
TheString=" bla bla bla \'em some more apo:S \'em and so on ";
এই ফাংশনটি আপনাকে কোনও সমস্যা ছাড়াই মাইএসকিউএলে পাঠ্য ক্ষেত্রগুলি সন্নিবেশ করানো বা আপডেট করার অনুমতি দিয়ে "\" "দিয়ে সমস্ত চর (39) প্রতিস্থাপন করবে।
সমস্ত প্রোগ্রামিং ভাষায় অনুরূপ ফাংশন পাওয়া যায়!