Resolvamos esta tontería de una vez que no hay que darle tantas vueltas jeje.
Código PHP:
<?php
$id="24";
$id="rwerwerwerw"; //esto al hacerle (int) te dice que es un numero pq se convierte en 0.
if(is_numeric((int)$id) and (int)$id>0) echo 'es un numero';
?>
Si quitas el segundo $id= veras que te es correcto, el segundo daría 0 y no entraría al poner >0 en la condición.
No te afecta el 0 ya que tu campo es un autoincrement y número, por tanto con eso tienes ya sea '1' ó 1.