Sólo piensa que ya no estás tratando con los "campos" directamente, estás tratando con el texto extraído de la BD y almacenado en una variable, que al fin y al cabo es eso: sólo una variable con texto.
Ahora, substr() debería funcionar perfectamente, observa:
Código PHP:
Ver original$texto = 'foo candy bar';
$texto_cortado = substr($texto, 0, 3); echo $texto_cortado; // foo
Si a ti no te funciona lamento decir que sería imposible adivinar una razón, así que te toca depurar tu código y mostrarnos más información que "sólo código".