В любом запросе UNION количество столбцов должно быть одинаковым в каждом SELECT, который вы объединяете с UNION. Другими словами, следующее является ошибкой, поскольку число столбцов не одинаково:
SELECT a, b, c FROM table1
UNION
SELECT a, b FROM table1
При выполнении SQL-инъекции вы можете не знать количество столбцов в списке выбора запроса ты эксплуатируешь. Добавьте больше столбцов с NULL по мере необходимости. Просто продолжайте пытаться, пока не получите что-то успешное.
SELECT * FROM drinks WHERE drinkname='smirnoff'
UNION
SELECT COLUMN_NAME, NULL, NULL, NULL, ...
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'drinks'
Это может показаться утомительным и подверженным ошибкам.
Но преступники, которые совершают атаки SQL-инъекций, довольно мотивированы.
Not necessary, but good practice. If you were to inadvertently reference it after release, bad things could happen, but in Objective C there isn't any harm in referencing a nil.
Setting an instance variable to nil is more useful in a multi-threaded application than a single-threaded one, since with multiple threads you can't always guarantee that an instance variable will only be read before it's released.
I generally don't bother in single-threaded applications, unless there's some other compelling reason.
Objective-C на самом деле то же самое, что и C с причудливым препроцессором.
Установка указателя на nil в Objective-C не влияет на то, на что когда-то указывал этот указатель.