Pasar Array a Int – PHP – php pdo

Pregunta:


necesito obtener el id del alumno con su rut(n° de identificacion) lo cual logro en la query que realizo en PDO el problema en que me regresa un array y no un int.

Entonces estaba en la duda transformo el valor obtenido en un integer o cambio la query para obtener un integer, segun yo tengo entendido siempre me regresa un array.

Y como lo puedo realizar.

Querry

public function alumnos_id($rut){

    try {
        $result = array();
        $sql = "SELECT alu_id FROM alumno WHERE alu_rut='$rut'";
        $stm = $this->pdo->prepare($sql);        
        $stm->execute();

       foreach ($stm->fetchAll(PDO::FETCH_OBJ) as $r) {

            $alm = array(
                            'alu_id' => $r->alu_id
                        );
            $result[] = $alm;
        }   

        return $result;    

        } catch (Exception $e) {
            echo $e;
        }

}

PHP

require_once('funciones/web_services/alumnos_ws.php');
$alumnos_obj = new alumnos_ws();
$alumnos_id = $alumnos_obj->alumnos_id($rut_alumno);

echo $alumnos_id;

Esto me devuelve en pantalla una palabra “Array”.

Preguntado por: Gustavo

A. Cedano

Si sólo necesitas el id del alumno, puedes usar fetchColumn() como he comentado antes. Es el método adecuado cuando sólo necesitamos una columna. Todo lo que haces en el foreach sobra en este caso, por eso lo he comentado.

He modificado el código dándole seguridad, por ello se crea una consulta preparada:

    $sql = "SELECT alu_id FROM alumno WHERE alu_rut =: rut";

Y luego se pasa el valor aparte:

    $stm->bindValue(":rut",$rut);

De ese modo evitamos la Inyección SQL.

La función quedaría así:

public function alumnos_id($rut){

    try {
        /* $result no sería un array
        $result = array();
        */ 
        $sql = "SELECT alu_id FROM alumno WHERE alu_rut =: rut";
        $stm = $this->pdo->prepare($sql);        
        $stm->bindValue(":rut",$rut);
        $stm->execute();
        $result = $stm->fetchColumn();

       /* Si esperas un solo resultado esto sobra ...

       foreach ($stm->fetchAll(PDO::FETCH_OBJ) as $r) {

            $alm = array(
                            'alu_id' => $r->alu_id
                        );
            $result[] = $alm;
        }   

        */     
        return $result;    

        } catch (Exception $e) {
            echo $e;
        }

}

Fuente

Tags:,

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *