Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Recuperar valor usando fetch_assoc()

Estas en el tema de Recuperar valor usando fetch_assoc() en el foro de PHP en Foros del Web. Buenas : Deseo obtener el valor id después de usar fetch_assoc() , este es el código que estoy usando : La funcion que utilizo para ...
  #1 (permalink)  
Antiguo 29/02/2016, 18:15
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 1 mes
Puntos: 0
Recuperar valor usando fetch_assoc()

Buenas :

Deseo obtener el valor id después de usar fetch_assoc() , este es el código que estoy usando :

La funcion que utilizo para extraer los datos
Código:
public function getUserByEmailAndPassword($email, $password) {

        $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");

        $stmt->bind_param("s", $email);

        if ($stmt->execute()) {
            $user = $stmt->get_result()->fetch_assoc();
            $stmt->close();
            return $user;
        } else {
            return NULL;
        }
    }

Código:
if (isset($_POST['email']) && isset($_POST['password'])) {

    $email = $_POST['email'];
    $password = $_POST['password'];

    $user = $db->getUserByEmailAndPassword($email, $password);

    if ($user != false) {
        session_start();

        $_SESSION['dev'] = $email;
        
        $_SESSION['userid'] = ?;

        header("Location: perfil.php");
En $_SESSION['userid'] = trate de usar :

user["id"]; ---> (id) Nombre del campo de mi DB que quiero recuperar
user[0];

Trato de mostrar el usuario y el id

Código:
<div class="container">
      <div class="starter-template">
        <h1>Perfil</h1>
        <p class="lead">
          <?php 
            $usuario = $_SESSION['dev']; //obteniendo el usuario
            $id = $_SESSION['userid']; 

            echo $usuario; 
            echo $id;

          ?>
        </p>
Me aparece el siguiente error : PHP Notice: Array to string conversion in "echo $id;"
  #2 (permalink)  
Antiguo 29/02/2016, 18:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recuperar valor usando fetch_assoc()

Cita:
En $_SESSION['userid'] = trate de usar :

user["id"]; ---> (id) Nombre del campo de mi DB que quiero recuperar
user[0];
¿Y si mejor muestras el código real que te produce el error?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/02/2016, 20:30
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Recuperar valor usando fetch_assoc()

Gracias por la pronta respuesta , el error que me aparece es este :

Me aparece el siguiente error : PHP Notice: Array to string conversion in "echo $id;"

habia escrito el error al final del post.

gracias
  #4 (permalink)  
Antiguo 29/02/2016, 22:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Recuperar valor usando fetch_assoc()

No.
Paketetrueke se refiere al código completo y real del script en PHP que dispara el error mencionado. El que pones parece ser parcial o modificado.
Para analizar errores se debe trabajar con los casos reales.

Por otro lado, el error de ese mensaje es simple: echo está definido para imprimir cadenas o números, Y en tu caso $ID es un Array, no es lo mismo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 01/03/2016, 15:00
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Recuperar valor usando fetch_assoc()

Buenas

El código completo este :

Código PHP:
Ver original
  1. class DB_Functions {
  2.  
  3.     private $conn;
  4.  
  5.     // constructor
  6.     function __construct() {
  7.         require_once 'DB_Connect.php';
  8.         // connecting to database
  9.         $db = new Db_Connect();
  10.         $this->conn = $db->connect();
  11.     }
  12.  
  13.     // destructor
  14.     function __destruct() {
  15.        
  16.     }
  17.  
  18.     ns user details
  19.      */
  20.     public function storeUser($name, $email, $password, $phone, $adress) {
  21.         $uuid = uniqid('', true);
  22.         $hash = $this->hashSSHA($password);
  23.         $encrypted_password = $hash["encrypted"]; // encrypted password
  24.         $salt = $hash["salt"]; // salt
  25.  
  26.         $stmt = $this->conn->prepare("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at, phone, adress) VALUES(?, ?, ?, ?, ?, NOW(),?,?)");
  27.         $stmt->bind_param("sssssss", $uuid, $name, $email, $encrypted_password, $salt, $phone, $adress);
  28.         $result = $stmt->execute();
  29.         $stmt->close();
  30.  
  31.         // check for successful store
  32.         if ($result) {
  33.             $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
  34.             $stmt->bind_param("s", $email);
  35.             $stmt->execute();
  36.             $user = $stmt->get_result()->fetch_assoc();
  37.             $stmt->close();
  38.  
  39.             return $user;
  40.         } else {
  41.             return false;
  42.         }
  43.     }
  44.  
  45.     /**
  46.      * Get user by email and password
  47.      */
  48.     public function getUserByEmailAndPassword($email, $password) {
  49.  
  50.         $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
  51.  
  52.         $stmt->bind_param("s", $email);
  53.  
  54.         if ($stmt->execute()) {
  55.             $user = $stmt->get_result()->fetch_assoc();
  56.             $stmt->close();
  57.             return $user;
  58.         } else {
  59.             return NULL;
  60.         }
  61.     }
  62. }
  63.  
  64. ?>

Pero de todo el codigo yo estoy usando la funcion publicada anteriormente "getUserByEmailAndPassword" ; el otro scrip tiene el siguiente codigo :

Código PHP:
Ver original
  1. <?php
  2. require_once 'include/DB_Functions.php';
  3. $db = new DB_Functions();
  4.  
  5. // json response array
  6. //$user = array();
  7.  
  8. if (isset($_POST['email']) && isset($_POST['password'])) {
  9.  
  10.     // receiving the post params
  11.     $email = $_POST['email'];
  12.     $password = $_POST['password'];
  13.  
  14.     // get the user by email and password
  15.     $user = $db->getUserByEmailAndPassword($email, $password);
  16.  
  17.     if ($user != false) {
  18.  
  19.         session_start();
  20.  
  21.         $_SESSION['dev'] = $email;
  22.        
  23.         $_SESSION['userid'] = $user;
  24.  
  25.         header("Location: perfil.php");
  26.  
  27.        
  28.     } else {
  29.  
  30.         header("Location: index.php");
  31.     }
  32. } else {
  33.  
  34. }
  35. ?>

Y esta es una parte del codigo html donde quiero mostrar el email y id del usuario

Código PHP:
Ver original
  1. -->
  2.     <div class="container">
  3.       <div class="starter-template">
  4.         <h1>Perfil</h1>
  5.         <p class="lead">
  6.           <?php
  7.            
  8.             $usuario = $_SESSION['dev']; //obteniendo el usuario
  9.             $id = $_SESSION['userid'];
  10.  
  11.             echo $usuario;
  12.             echo print_r($id,true);
  13.           ?>
  14.         </p>
  15.       </div>
  16.     </div><!-- /.container -->

Yo se que lo que estoy imprimiendo en el echo esta tomando el valor de un array ya que no puedo pasar el id que necesito
y al tratar de imprimirlo me manda el error "PHP Notice: Array to string conversion in "echo $id;"
Código PHP:
Ver original
  1. $id = $_SESSION['userid'];
  2. echo $id;

trato de capturar el valor que esta retornando en esta parte

Código PHP:
Ver original
  1. if ($user != false) {
  2.  
  3.         session_start();
  4.  
  5.         $_SESSION['dev'] = $email;
  6.        
  7.         $_SESSION['userid'] = $user; // necesito capturar el valor que tiene "id"

Pero no se exactamente que colocar en la variable "$user" para que extraiga del array devuelto del metodo "getUserByEmailAndPassword" el id que necesito.

Si realizo un "echo print_r($id,true);" me muestra esto :

Código PHP:
Ver original
  1. Array ( [id] => 16 [unique_id] => 56d4afbce978f2.31054501 [name] => Name [email] => ja@ja.com [encrypted_password] => xcycksEXAwYS2kUS8rTtXPzbWlE3Mzc1NzJkMDM1 [salt] => 737572d035 [created_at] => 2016-02-29 15:53:16 [updated_at] => [phone] => 2222 [adress] => ddddddd )

Lo que necesito es extraer el valor de "id" para guardarlo en una variable y poder mostrarlo tambien; trate colocando
$_SESSION['userid'] = $user[id];
$_SESSION['userid'] = $user['id'];
$_SESSION['userid'] = $user[0];

Pero no me funciona , espero que quede mas claro lo que necesito

Saludos Cordinales

Última edición por davidxf4; 01/03/2016 a las 15:11
  #6 (permalink)  
Antiguo 01/03/2016, 15:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recuperar valor usando fetch_assoc()

Pues tu código está bien, el tema es que estás guardando un array:
Código PHP:
Ver original
  1. $_SESSION['userid'] = $user;

Porque tu método devuelve un array:
Código PHP:
Ver original
  1. $user = $stmt->get_result()->fetch_assoc();
  2. $stmt->close();
  3. return $user;

Entonces esto está mal:
Código PHP:
Ver original
  1. $id = $_SESSION['userid'];
  2. echo $id;

El error te lo dice bien claro:
Cita:
PHP Notice: Array to string conversion in "echo $id;"
Porque un array no lo puedes imprimir así.

Necesitas imprimir un valor del array basado en el índice.

O bien, en el momento de guardar el valor en sesión accede al valor que necesites:
Código PHP:
Ver original
  1. $_SESSION['userid'] = $user['la_columna_del_id_del_usuario_o_lo_que_quieras'];
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 03/03/2016, 10:59
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Recuperar valor usando fetch_assoc()

Buenas gracias por responder ; ese es problema que tengo;estoy tratando de capturar el id del usuario probe usando :

Código PHP:
Ver original
  1. $_SESSION['userid'] = $user[id];
  2. $_SESSION['userid'] = $user['id'];
  3. $_SESSION['userid'] = $user[0];

pero no me funciona esto lo estoy haciendo en esta parte

Código PHP:
Ver original
  1. if ($user != false) {
  2.  
  3.         session_start();
  4.  
  5.         $_SESSION['dev'] = $email;
  6.        
  7.         $_SESSION['userid'] = $user; // $user[id]; / $user['id']; / $user[0];
  8.  
  9.         header("Location: perfil.php");
  10.  
  11.        
  12.     } else {
  13.  
  14.         header("Location: index.php");

pero me sigue retornando el array

Saludos
  #8 (permalink)  
Antiguo 03/03/2016, 11:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recuperar valor usando fetch_assoc()

Pues si no sabes cómo acceder a dicho valor ¿piensas que nosotros sí?

Vamos, no hay mejor forma que inspeccionar tu código, has esto:
Código PHP:
Ver original
  1. $user = $db->getUserByEmailAndPassword($email, $password);
  2. var_dump($user);

¿Qué obtienes?

El colmo es que hayas programado tus cosas así y no sepas ni cómo funcionan, eso es grave.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 03/03/2016, 11:36
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Recuperar valor usando fetch_assoc()

Buenas el problema era al parecer el navegador utilizo mac y uso safari ; borre las cookies y funciono de forma normal solo colocando esto en el código

Código PHP:
Ver original
  1. $user['id'];

Gracias por la ayuda , saludos
  #10 (permalink)  
Antiguo 03/03/2016, 11:49
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Recuperar valor usando fetch_assoc()

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues si no sabes cómo acceder a dicho valor ¿piensas que nosotros sí?

Vamos, no hay mejor forma que inspeccionar tu código, has esto:
Código PHP:
Ver original
  1. $user = $db->getUserByEmailAndPassword($email, $password);
  2. var_dump($user);

¿Qué obtienes?

El colmo es que hayas programado tus cosas así y no sepas ni cómo funcionan, eso es grave.

Buenas Quizás después de todo lo que comente no me supe explicar bien o realmente no me entendio , respecto al echo yo sabia que estaba enviando un array ya lo habia mostrado en este codigo :

Código PHP:
Ver original
  1. Array ( [id] => 16 [unique_id] => 56d4afbce978f2.31054501 [name] => Name [email] => ja@ja.com [encrypted_password] => xcycksEXAwYS2kUS8rTtXPzbWlE3Mzc1NzJkMDM1 [salt] => 737572d035 [created_at] => 2016-02-29 15:53:16 [updated_at] => [phone] => 2222 [adress] => ddddddd )

Yo solo tenia problemas al mostrarlo pues como indique realize varias pruebas anteriormente

Código PHP:
Ver original
  1. $_SESSION['userid'] = $user[id];
  2. $_SESSION['userid'] = $user['id'];
  3. $_SESSION['userid'] = $user[0];

Lo unico que necesitaba era saber si estaba extrayendo bien el valor que necesitaba yo se que el array es de tipo asociativo

Código HTML:
Ver original
  1. http://php.net/manual/es/language.types.array.php

Me extrañaba que no podia extraer el valor que necesitaba con lo que ya habia probado ; no entiendo la respuesta que me dio al comentar,"Pues si no sabes cómo acceder a dicho valor ¿piensas que nosotros sí?"pienso que si , ya que solo tenia que indicarme si estaba bien o no la forma en que extraia el array :

Código PHP:
Ver original
  1. $user['id'];

solo necesitaba de ese array el valor id.

Como comente el error era solo un problema del navegador y estaba bien la forma en que extraía ese valor ; de igual manera agradezco que se haya tomado el tiempo de leer mi problema y tratar de solucionarlo

Saludos Cordiales

Última edición por davidxf4; 03/03/2016 a las 11:59

Etiquetas: select, usando, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.