從MySQL返回數據時,無論MySQL數據類型如何,都會自動將其作爲字符串返回。如何從PHP中以整數形式獲取MySQL中的整數?
有什麼辦法告訴MySQL/PHP維護數據類型(例如int),所以如果你查詢一個int列,你會得到一個PHP中的整數而不是字符串?
從MySQL返回數據時,無論MySQL數據類型如何,都會自動將其作爲字符串返回。如何從PHP中以整數形式獲取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;
+1這幾乎涵蓋了類型轉換選項。 :-) – 2011-02-16 09:19:06
如果你的整數大於`PHP_INT_MAX`,它將被限制。例如,即使您運行的是64位PHP,也無法將全部MySQL的`unsigned bigint`全部獲取到PHP中。 – Pacerier 2015-07-27 05:58:37
PHP的MySQL默認庫沒有這種類型的選項。使用類型鑄造 像(int)或intval,(浮動)等
在php中,你可以使用([類型])來確保$ something是整數,這有助於SQL注入,如果你知道它。
例如:
(int) $something;
你可以使用類型轉換,一旦你從你的MySQL數據庫
$row['field'] = (int)$row['field'];
拉着數據在庫MySQLi使用bind_result
:它設置正確的類型和處理NULL
。
我不知道你問這個問題的背景。因爲php變量的數據類型取決於表中某列的數據類型。如果該列中的數據類型爲「int」,那麼在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;
}
可以進行多次檢查變量有什麼樣的數據類型和然後相應地施放它。
我希望這個回覆會有幫助。祝你好運!:)
如果你想通過價格的值ordening,您可以更改 數據類型的列FLOAT(例如:價格)
EX:
TABLE普電子
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等
如果您正在運行Ubuntu:
sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
值得一提的是PHP不能浩ld大於`PHP_INT_MAX`的整數(在我的電腦中是2,147,483,647)。這可以安全地存儲一個有符號的INT,但不是一個無符號的INT或任何更大的。 – 2011-02-16 09:25:56