Manual de referencia:
Cita: MID(str,pos,len)
MID(str,pos,len) es sinónimo de SUBSTRING(str,pos,len).
En cuanto a SUBSTRING, que ya conoces, lo que dice el refman es:
Cita: SUBSTRING(str,pos) , SUBSTRING(str FROM pos), SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
Las formas sin el arguemnto len retornan una subcadena de la cadena str comenzando en la posición pos. Las formas con el argumento len retornan una subcadena de longitud len a partir de la cadena str, comenzando en la posición pos.Las formas que usan FROM son sintaxis SQL estándard. En MySQL 5.0, es posible usar valores negativos para pos. En este caso, el inicio de la subcadena son pos caracteres a partir del final de la cadena, en lugar del principio. Un valor negativo puede usarse para pos en cualquier de las formas de esta función.
Código MySQL:
Ver original -> 'ratically'
-> 'barbar'
-> 'ratica'
-> 'ila'
-> 'aki'
-> 'ki'
Esta función trabaja con múltiples bytes.
Tenga en cuenta que si usa un valor menor a 1 para len, el resultado siempre es una cadena vacía.
SUBSTR() es sinónimo de SUBSTRING().
En referencia a PHP, no es tema de este foro. Usar MySQL
no implica usar PHP. SOn cosas independientes (podrías usar PHP con Oracle, si quieres, y serviría).
Pero si la consulta se ejecuta correctamente, lo que es probable que suceda es que no estás leyendo bien el resultado (eso es off topic acá), por lo que mi sugerencia es que pruebes manualmente en phpMyadmin la consulta. Si funciona, el problema es tu código de PHP, y eso lo debes verificar en el foro correspondiente.