Когда данные возвращаются из MySQL, они автоматически возвращаются в виде строк, независимо от типа данных MySQL.
Есть ли способ сказать MySQL / PHP для поддержания типов данных (например, int), поэтому, если вы запрашиваете столбец int, вы получаете целое число в PHP вместо строки?
Ну, вы можете сделать Type casting, чтобы преобразовать тип возвращаемых данных с помощью PHP.
Вы можете взглянуть на int
, intval
для преобразования в целые числа. Вы также можете использовать 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");
Другой способ:
$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;
В MySQLi используйте bind_result
: он устанавливает правильный тип и обрабатывает NULL
.
Если вы используете Ubuntu:
sudo apt-get remove php5-mysql sudo apt-get install php5-mysqlnd sudo service apache2 restart
Поскольку PHP не является строго типизированным языком, это несколько бессмысленно, но вы, конечно, можете просто передать поле , заданное int, через settype и т. Д. До использования.
Независимо от того, что я знаю, нет способа сохранить эту «тип» информацию автоматически.
Вы можете использовать литье типов, как только вы вытащили данные из своей базы данных MySQL
$row['field'] = (int)$row['field'];
У библиотеки PHP по умолчанию для MySQL нет таких вариантов. Использовать заливку типа like (int) или intval, (float) и т. Д.
в php, вы можете использовать ([type]), чтобы удостовериться, что $ something было целым, эта помощь SQL-инъекции, если вы это знаете.
например:
(int) $something;
Я не знаю, в каком контексте вы задавали этот вопрос. Поскольку тип данных переменной php зависит от того, какой тип данных имеет столбец в вашей таблице. Если столбец имеет тип данных «int» в mysql, вы получаете целое число в php (а не в строке).
Но в любом случае вы можете использовать либо is_numeric (), is_int (), либо gettype () php-функции, чтобы узнать тип данных возвращаемого значения из Mysql. Проблема с is_numeric () заключается в том, что она возвращает true, даже если переменная содержит числовую строку, например «2». Но gettype () вернет «string», а is_int () всегда вернет false в примере, указанном, например, «2».
После того, как вы знаете тип данных возвращаемого значения, вы можете привязать переменную php для поддержки такого типа, как:
// 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; }
Вы можете сделать несколько проверок того, какой тип данных имеет переменная, а затем сделать ее соответствующим образом.
Надеюсь, этот ответ будет полезен. Удачи! 🙂
Если вы хотите получить значения, упорядочивающие по цене, вы можете изменить тип данных на FLOAT из столбца (например: цена)
EX:
ТАБЛИЦА 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");
// результат
1596.90 4 56.90 5 55.90 1 40.33 2 10.60 3
// Заказ относится к ценам // OBS: вы можете изменить точки с помощью «,», используя результат str_replace () //: 1596,90 – 56,90 – 55,90 – 40,33 – 10,60 и т. Д. ,