۲ مطلب با کلمه‌ی کلیدی «جستجو» ثبت شده است

جستجوی انعطاف‌پذیر

نکته: دیتابیس اوراکل قابلیت PREPARE STATEMENT رو ساپورت میکنه

هرگاه بخواهیم در دستور SELECT خود، از کاربر ورودی دریافت نماییم، از & استفاده می‌کنیم. برای این مثال، از جدول PERSON استفاده خواهیم‌کرد.

دستور زیر تمام رکورد‌های جدول PERSON را به شرطی که فیلد NAME آن مساوی با ورودی کاربر باشد لیست می‌کند. دقت داشته باشید، بعد از اجرای کوئری پایگاه‌داده از شما مقدار ورودی را خواهد پرسید، به دستور زیر توجه کنید:

در پرس‌وجوی فوق از کاربر ورودی گرفته می‌شود، سپس جستجو در جدول PERSON آغاز می‌گردد و در انتها خروجی را به کاربر نمایش می‌دهد:

SELECT * FROM T5 WHERE AGE = &PLEASE_ENTER_YOUR_AGE;
ENTER VALUE FOR PLEASE_ENTER_YOUR_AGE: 10
AGE NAME
---- ------------
10 HOSSEIN

حالا می‌خوام INJECT کنم، می‌بینید که INJECT را قبول میکنه!!

SELECT * FROM T5 WHERE AGE = &PLEASE_ENTER_YOUR_AGE;
ENTER VALUE FOR PLEASE_ENTER_YOUR_AGE: 10 OR 1=1
AGE NAME
---- ----------
50 HAMID
20 AKBAR
10 HOSSEIN
30 HOSSEIN
15 AKBAR

در حقیقت عمل prepare statement‌ هم همینه یعنی پارامترها جدا میره سمت دیتابیس و دستور sql جدا میره سمت دیتابیس

نکته: من از قصد علامت & رو گذاشتم تا SQL INJECT رو قبول کنه ولی در فصل‌های آینده به این موضوع می‌رسیم که چجوری جلوی INJECT را در PREPARE STATEMENT بگیریم و دیگه دستور SQL رو به عنوان ورودی نگیره(پشت & یه علامت دیگه می‌ذاریم):

۰۱ ارديبهشت ۹۴ ، ۲۰:۵۵ ۰ نظر
مهدی غفاری

جستجو در تاریخچه دستورات

تا به حال به این فکر کرده اید که چطور می توان در کامندهای گذشته شده search انجام داد ؟؟ برای این کار کافی است که از ترکیب کلید های ctrl+r استفاده کرده و عبارت مورد نظر را search کنیم .

برای اجرای آخرین کامند می‌توان از علامت!! استفاده کرد و برای اجرای آخرین دستوری که به طور فرض با ss شروع شده است کافی است !ss را زده و اینتر کرده تا آخرین دستوری که با ss شروع شده است اجرا شود.

برای اجرای n امین دستور به صورت زیر عمل می‌کنیم !n و برای اجرای n امین دستور از انتها به صورت زیر عمل می‌کنیم.

!-n

۲۳ اسفند ۹۳ ، ۲۲:۱۱
مهدی غفاری