Farewell наглядным запросам.
Классическим способом составления запроса является просто написать его в строку, вставляя в нужных местах переменные.
$query="SELECT * FROM table WHERE id='$id'";
Весьма наглядный, читабельный и приятный способ.
Однако, перед нами стоит проблема SQL-injection, с которой провайдеры борются повальным выставлением волшебных кавычек. Но и здесь не все гладко.
Во-первых, товарищ Wicked ткнул меня носом в сибейзовые кавычки. И теоретические, весьма теоретические проблемы с ними. Но проблемы. Весьма, теоретические, и гипотетические. Малореальные. Но теоретически возможные.
Во-вторых, мы имеем тот факт, что волшебные кавычки нам квотят только внешние переменные. А запросу-то все равно - прослешены должны быть любые.
Отсюда делается очевидный вывод.
Для того, чобы избежать любых проблем с данными, надо
1. избавляться от волшебных кавычек и их последствий.
по возможности вырубать magic_quotes_gpc, при невозиможности - очищать переменные в самом начале.
2. Квотить данные перед непосредственно перед помещением в запрос.
Отсюда делается грустный вывод.
Что, таки - да.
Say bye-bye to красивый и наглядный запрос
$query="SELECT * FROM table WHERE id='$id'";
Добро пожаловать программы для составления запросов, плейсхолдеры и прочая машинерия...
Классическим способом составления запроса является просто написать его в строку, вставляя в нужных местах переменные.
$query="SELECT * FROM table WHERE id='$id'";
Весьма наглядный, читабельный и приятный способ.
Однако, перед нами стоит проблема SQL-injection, с которой провайдеры борются повальным выставлением волшебных кавычек. Но и здесь не все гладко.
Во-первых, товарищ Wicked ткнул меня носом в сибейзовые кавычки. И теоретические, весьма теоретические проблемы с ними. Но проблемы. Весьма, теоретические, и гипотетические. Малореальные. Но теоретически возможные.
Во-вторых, мы имеем тот факт, что волшебные кавычки нам квотят только внешние переменные. А запросу-то все равно - прослешены должны быть любые.
Отсюда делается очевидный вывод.
Для того, чобы избежать любых проблем с данными, надо
1. избавляться от волшебных кавычек и их последствий.
по возможности вырубать magic_quotes_gpc, при невозиможности - очищать переменные в самом начале.
2. Квотить данные перед непосредственно перед помещением в запрос.
Отсюда делается грустный вывод.
Что, таки - да.
Say bye-bye to красивый и наглядный запрос
$query="SELECT * FROM table WHERE id='$id'";
Добро пожаловать программы для составления запросов, плейсхолдеры и прочая машинерия...