MySQLからデータが返されると、MySQLのデータ型に関係なく、データは自動的に文字列として返されます。
MySQL/PHPにデータ型(intなど)を維持するように指示する方法はありますか?したがって、int列をクエリすると、文字列ではなくPHP)の整数を取得しますか?
型キャスト を実行して、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
MySQLデータベースからデータを取得したら、型キャストを使用できます。
$row['field'] = (int)$row['field'];
PHPは強く型付けされた言語ではないので、これはやや無意味ですが、もちろん、 settype などを介して問題のフィールドをintにキャストすることもできます。使用前。
関係なく、この「タイプ」情報を自動的に維持する方法(私が知っている)はありません。
PHPのMySQL用のデフォルトライブラリには、この種のオプションはありません。 (int)やintval、(float)などの型キャストを使用する
pHPでは、([type])を使用して、$ somethingが整数であることを確認できます。これはSQLインジェクションに役立ちます。
例:
(int) $something;
価格ごとに値を取得する場合は、列からデータ型をFLOATに変更できます(例:価格)
例:
表電子工学
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など。
あなたがこの質問をした状況はわかりません。 php変数のデータ型は、テーブルの列のデータ型に依存するためです。列のデータ型がmysqlで「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;
}
変数のデータ型をいくつかチェックして、それに応じてキャストすることができます。
この返信がお役に立てば幸いです。幸運を! :)