Как получить целое число от MySQL как целое в PHP?
Когда данные возвращаются из MySQL, они автоматически возвращаются в виде строк, независимо от типа данных MySQL.
Есть ли способ сказать MySQL/PHP для поддержки типов данных (например, int), поэтому, если вы запрашиваете столбец int, вы получаете целое число в PHP вместо строки?
Ответы
Ответ 1
Ну, вы можете сделать 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;
Ответ 2
В MySQLi используйте bind_result
: он устанавливает правильный тип и обрабатывает NULL
.
Ответ 3
Если вы используете Ubuntu:
sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
Ответ 4
Вы можете использовать литье типов после того, как вы вытащили данные из базы данных MySQL.
$row['field'] = (int)$row['field'];
Ответ 5
Поскольку PHP не является строго типизированным языком, это несколько бессмысленно, но вы, конечно, можете просто передать рассматриваемое поле в int через settype и т.д. до использования.
Независимо от того, что я знаю, нет способа сохранить эту "типную" информацию автоматически.
Ответ 6
PHP-библиотека по умолчанию для MySQL не имеет таких параметров. Использовать тип литья
(int) или intval, (float) и т.д.
Ответ 7
в php, вы можете использовать ([type]), чтобы удостовериться, что $something было целым, эта помощь SQL-инъекции, если вы об этом знаете.
Пример:
(int) $something;
Ответ 8
Я не знаю, в каком контексте вы задали этот вопрос. Поскольку тип данных переменной php зависит от того, какой тип данных имеет столбец в вашей таблице. Если столбец имеет тип данных "int" в mysql, вы получаете целое число в php (не строку).
Но в любом случае вы можете использовать функции is_numeric(), is_int() или gettype() php, чтобы узнать тип данных возвращаемого значения из Mysql. Проблема с is_numeric() заключается в том, что она возвращает true, даже если переменная содержит числовую строку, например. "2".
Но gettype() вернет "string", а is_int() всегда вернет false в примере, указанном i.e. "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;
}
Вы можете сделать несколько проверок того, какой тип данных имеет переменная, а затем сделать ее соответствующим образом.
Я надеюсь, что этот ответ будет полезен. Удачи!:)
Ответ 9
Если вы хотите получить значения, упорядочивающие по цене, вы можете изменить Тип данных для FLOAT из столбца (например: цена)
EX:
ТАБЛИЦА ЭЛЕКТРОНИКИ
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 и т.д.