¿Cómo obtener un entero de MySQL como un entero en PHP?

Cuando los datos son devueltos de MySQL, se devuelve automáticamente como cadenas, independientemente del tipo de datos de MySQL.

¿Hay alguna manera de decirle a MySQL / PHP que mantenga los tipos de datos (por ejemplo, int), de modo que si consulta una columna int, obtiene un entero en PHP en lugar de una cadena?

Bueno, puedes hacer conversión de tipos para convertir el tipo de datos devueltos usando PHP.

Puedes echar un vistazo a int , intval para convertir a enteros. También puedes usar settype :

 settype($foo, "array"); settype($foo, "bool"); settype($foo, "boolean"); settype($foo, "float"); settype($foo, "int"); settype($foo, "integer"); settype($foo, "null"); settype($foo, "object"); settype($foo, "string"); 

Otra forma sería:

 $foo = (array)$foo; $foo = (b)$foo; // from PHP 5.2.1 $foo = (binary)$foo; // from PHP 5.2.1 $foo = (bool)$foo; $foo = (boolean)$foo; $foo = (double)$foo; $foo = (float)$foo; $foo = (int)$foo; $foo = (integer)$foo; $foo = (object)$foo; $foo = (real)$foo; $foo = (string)$foo; 

En MySQLi usa bind_result : establece el tipo correcto y maneja NULL .

Si está ejecutando Ubuntu:

 sudo apt-get remove php5-mysql sudo apt-get install php5-mysqlnd sudo service apache2 restart 

Podría usar el tipo de conversión una vez que haya extraído los datos de su base de datos MySQL

 $row['field'] = (int)$row['field']; 

Como PHP no es un lenguaje fuertemente tipado, esto no tiene ningún sentido, pero por supuesto puede simplemente convertir el campo en cuestión en int a través de settype , etc. antes de su uso.

Independientemente, no hay forma (que yo sepa) de mantener esta información de “tipo” automáticamente.

La biblioteca predeterminada de PHP para MySQL no tiene ninguna opción de este tipo. Utilice el tipo de conversión como (int) o intval, (float), etc.

en php, puede usar ([tipo]) para asegurarse de que $ something was integer, esta ayuda sql injection si sabe algo al respecto.

ex:

 (int) $something; 

No sé en qué contexto hizo esta pregunta. Porque el tipo de datos de una variable php depende del tipo de datos que tenga una columna en su tabla. Si la columna tiene tipo de datos “int” en mysql, obtienes un entero en php (no en una cadena).

Pero de todos modos, puede usar cualquiera de las funciones de php is_numeric (), is_int () o gettype () para conocer el tipo de datos de un valor devuelto de Mysql. El problema con is_numeric () es que devuelve verdadero incluso si una variable contiene una cadena numérica, por ejemplo, “2”. Pero gettype () devolverá “cadena” e is_int () siempre devolverá falso en el ejemplo mencionado, es decir, “2”.

Una vez que conozca el tipo de datos de un valor devuelto, puede vincular la variable php para mantener ese tipo por tipo de conversión de esta manera:

 // Suppose this is the returned value from mysql and // you do not know its data type. $foo = "2"; if (gettype($foo) == "string"){ $foo = (string) $foo; } 

Puede hacer varias comprobaciones para qué tipo de datos tiene la variable y luego emitirla en consecuencia.

Espero que esta respuesta sea útil. ¡Buena suerte! 🙂

Si desea obtener los valores ordenados por Precio, puede cambiar el Tipo de datos a FLOTAR de la columna (ej: precio)

EX:

TABLA eletronics

 price id ---------------- 55.90 1 40.33 2 10.60 3 1596.90 4 56.90 5 

PHP:

 $sql = $pdo->query("SELECT * FROM eletronics ORDER BY price DESC"); 

//resultado

 1596.90 4 56.90 5 55.90 1 40.33 2 10.60 3 

// El orden es por precios // OBS: Puede cambiar los puntos con “,” usando el resultado str_replace () //: 1596,90 – 56,90 – 55,90 – 40,33 – 10,60 etc. .