Пример выглядит неполным.
Возможно ли, чтобы переменные $ tablename или $ itemname были пустыми?
вы смешиваете sprintf и конкатенацию строк. Лучший способ - использовать только один метод. i.e.:
$ sql = "ОБНОВЛЕНИЕ% s SET stock = '% s' ГДЕ itemname = '% s'";
sprintf ($ sql, $ tablename, $ stock, $ itemname); // используем это в mysql_query
Но согласитесь с Паркер, что вы не цитируете свою строку