Wenn mysql_query NULL zurückgibt, dann wäre das ein Fehler in PHP. Woher wissen Sie, dass es tatsächlich NULL zurückgibt?
Für Update-Anweisungen sollte mysql_query nur TRUE oder FALSE zurückgeben. Ihr Fehlerprüfcode ist also in Ordnung. Um herauszufinden, was schief gelaufen ist, müssen Sie eine andere Funktion aufrufen - mysql_error() würde Ihnen einen Klappentext darüber geben, was schief gelaufen ist. Geben Sie also den Wert von mysql_error() in Ihrem falschen Block aus. So:
echo 'failed. SQL Err: '. mysql_error()
Wenn Sie das tun, erhalten Sie wahrscheinlich einen Hinweis darauf, wie "Datensatz aktualisiert wurde, aber der Rückgabewert falsch ist". Es hätte nicht passieren dürfen.