Hola rbczgz, algunas ideas me has dado sobre todo en lo que se refiera a la depuración del código, agradezco tu interés.
Te comento que no me daba ningún error, simplemento no se reordenaban las líneas conforme yo esperaba.
La variable $num_fact es varchar por lo que si debe de llevar comillas, se trata del número de factura que es del tipo n/aaaa (n=número, /,  aaaa=año).
He acoplado tu código a mi proyecto de esta manera: 
 Código PHP:
    $query_msjLin = $form_db -> query ("SELECT * FROM lineas_fact WHERE num_fact='$num_fact'");
$row_msjLin = mysqli_fetch_assoc($query_msjLin);
$TotalLineas = mysqli_num_rows($query_msjLin);
$a=1;
echo "<pre>";
print_r($row_msjLin);
echo "</pre>";
    do {
        $consulta="UPDATE lineas_fact SET numero_linea=".$a." WHERE num_fact='$num_fact'";
        $resultado=mysqli_query($form_db,$consulta);
        $a++;
    } while ($row_msjLin = mysqli_fetch_assoc($query_msjLin));
mysqli_close($form_db);
//Header("Location:../new.fact.php?id=".$cli);
echo $consulta . "<br>";
echo $num_fact."<br />";
echo $TotalLineas; 
    
  Y al ejecutarlo esto es lo que sale:  
 Cita:  Array
(
    [id] => 29
    [created_at] => 2017-01-19 20:19:52
    [id_fact] => 0
    [num_fact] => 9/2017
    [numero_linea] => 2
    [concepto] => Limpieza de desagues y arquetas
    [cantidad] => 0
    [importe] => 0
    [total] => 75
)
 
UPDATE lineas_fact SET numero_linea=2 WHERE num_fact='9/2017'
9/2017
2
    Aclaro que mi consulta solo saca dos registros y a los dos le pone el ultimo valos, es decir el 2 
El do  while solo hace recorrer los dos registros pero a los dos le pone el mismo valor, en el primer recorrido el 1 y en el segundo recorrido el 2 y yo lo que deseo es que al primer registro le ponga el 1 y al segundo el 2. 
Posiblemente puedas ayudarme de alguna manera, por el momento me has enseñado mucho pues he visto la forma de poder depurar los códigos de una manera clara y precisa. 
Si se te ocurre algo espero me lo indiques. 
Gracias y saludos.