Bueno, por lo pronto lo que estás escribiendo está sintácticamente MAL en SQL:
Código SQL:
Ver originalUPDATE voto
SET voto = voto + '".$_POST['rate']."'
AND numero_voto = numero_voto+1
No se peude usar un AND en ese punto. Para indicar dos campos afectados por el SET se los debe separar por comas:
Código SQL:
Ver originalUPDATE voto
SET voto = voto + '".$_POST['rate']."' , numero_voto = numero_voto+1
En segundo lugar,
no trates los valores de una suma como caracteres. Los numeros no son cadenas de texto, y no deben quedar entre apostrofos ('):
Código SQL:
Ver originalUPDATE voto
SET voto = voto + ".$_POST['rate']." , numero_voto = numero_voto + 1
En tercer lugar, la sentencia que pones es un
UPDATE masivo, porque no le estás indicando a cuál registro de voto debe sumarle nada. Por consecuencia le sumará uno a todos y cada uno de los registros que existan en la tabla, y en todos los casos sumará uno además al campo "numero_voto".
Me parece que estás planteando mal todo el tema... La solución debería ser diferente, y los votos deberían estar en una tabla especifica, relacionada con el tema votado y con el usuario que vota.
De ese modo podrías obtener el total de votos con una simple consulta, en lugar de andar haciendi UPDATEs innecesarios.