Código SQL:
Ver originalSELECT *
FROM usuarios usr INNER JOIN usuarios_cargos u_c USING(Usuarioid)
INNER JOIN cargos car USING(Cargoid)
WHERE usr.Usuarioid = colname ;
La consulta está basicamente bien escrita (aquí te la planteo simplificada); si no te está devolviendo resultados puede ser por cuatro razones:
1) No hay usuarios con cargos que tengan por ID el valor que estás ingresando.
2) No hay usuarios asignados a cargos.
3) La variable que estás usando está entrando vacía.
4) Hay un error de sintaxis no administrado: la variable está entrando mal a la sentencia y creando un error sintáctico.
Yo pensaría en una de las últimas dos. Son más probables siendo que el valor devuelto por la sentencia es -1. Este valor es indicador de que la sentencia no se puede ejecutar, pero como no estás capturando los errores devueltos por MySQL, no podemos saberlo a ciencia cierta.
¿Cómo haces para ingresar el valor de colname: al crear la sentencia o como parámetro?
Captura los errores y fíjate si dice algo.