Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/12/2012, 16:34
ccsaiKo
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 9 meses
Puntos: 7
Problema con mysqli y BIGINT mysql

Hola como están ?
Bueno tengo el siguiente problema:

Estoy creando una aplicación en facebook y como los id de los usuarios son tan largos, obté por que la columna id de mi tabla fuera de tipo BIGINT. en vez de int.

Me di cuenta que al guardar mi id "100002189287259" en la base de datos, cambiaba su valor a "-18...".

Cambiando por ahi y por alla.. me di cuenta que el problema surge al momento ejecutar la funcion mysqli->bind_param();

Facebook te da el id de el usuario en cadena, por lo tanto al momento de obtenerlo
lo convierto a entero para luego ser insertado como un int en la base de datos..
de esta forma:

Código PHP:
                $cod = (int) $data_user['uid'];
        
$nombre $data_user['first_name'];
        
$apellido $data_user['last_name'];
        
$email $data_user['email'];
        
//SQL 

        
$sql 'insert into users (cod,nombre,apellido,email) ';
        
$sql .='values (?,?,?,?)';
        
        
//PREPARE
        
$stmt=$OBJmysqli->prepare($sql);
        
$stmt->bind_param('isss',$cod,$nombre,$apellido,$email);
        if(
$stmt->execute())
        {
            return 
true;
        }else{
            return 
false;
        } 
Se supone que esa es la forma correcta indicar cuales son los tipos de datos..
pero como los dije anteriormente.. el id 100002189287259 queda guardado como "-18..(etc)"

Metiendo mano.. cambie la forma la cual le indicaba el tipo de dato a la funcion bind_param y la deje
Código PHP:
$stmt->bind_param('ssss',$cod,$nombre,$apellido,$email); 
Indicandole que la variable era una cadena.. siendo que es de tipo entero.. de esta forma el id se guarda correctamente

Alguien me podria explicar porque paso eso ? .. Muchas gracias.