¿Cómo evito que MySQL actualice la columna con una cadena vacía?

Tengo un formulario para actualizar los detalles de un usuario y no tienen que completar todos los campos. Por eso, pasará una cadena vacía a la base de datos a través de POST. Esta es mi consulta:

$q = "UPDATE mdl_user SET firstname='$fname', lastname='$lname', email='$email', address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'"; 

¿Hay alguna forma de que MySQL verifique si, por ejemplo, $fname es una cadena vacía y si está vacía, no actualice ese campo?

Si no, ¿cómo debo hacer esto en PHP?

Puede usar la statement IF para cada campo que necesite verificar. Por ejemplo :

 $q = "UPDATE mdl_user SET firstname=IF(LENGTH('$fname')=0, firstname, '$fname'), lastname=IF(LENGTH('$lname')=0, lastname, '$lname'), email=IF(LENGTH('$email')=0, email, '$email'), address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'"; 

Yo haría esto

 < ?php if ($fname) { $fname = "firstname='$fname',"; } else { $fname = ''; } $q = "UPDATE mdl_user SET $fname lastname='$lname', email='$email', address='$address', city='$city', school='$school', phone1='$phone' WHERE id='$uid'"; ?> 

Pero realmente debería preocuparse por cuán inseguro es su código.

Primero ejecuta una instrucción SELECT y haz un mysql_num_row () si esto devuelve un valor > 0 y luego exit ()