Начнем с того, что если я помещу в куку свое значение, возможна sql injection. mysql_real_escape_string в помощь. Да и в целом, я думал уже все на PDO перешли ( курим
php.net/PDO ).
select -> increment -> update ни разу не атомарны. Что мешает использовать build-in функционал ^
update `table` set `field` = field + 1
Далее, в данном случае можно легко избавиться от избыточной вложенности условий, путем определения переменной, хранящей куку utm_source.
$utm_source = isset($_COOKIE['utm_source']) ? $_COOKIE['utm_source'] : 'without utm';
// я бы тут "without utm" заменил на NULL, конечно
Потом, select -> if == 0 -> insert else update - это говнокод. Зачем этот лишний запрос? Юзать INSERT ON DUPLICATE KEY UPDATE.