web-dev-qa-db-ja.com

PHPでMySQLから整数として整数を取得するにはどうすればよいですか?

MySQLからデータが返されると、MySQLのデータ型に関係なく、データは自動的に文字列として返されます。

MySQL/PHPにデータ型(intなど)を維持するように指示する方法はありますか?したがって、int列をクエリすると、文字列ではなくPHP)の整数を取得しますか?

17
fbwb

型キャスト を実行して、PHPを使用して返されたデータの型を変換できます。

intintval を見て、整数に変換できます。 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;
15
Sarfraz

MySQLiでは bind_result :正しいタイプを設定し、NULLを処理します。

8
aaz

Ubuntuを実行している場合:

Sudo  apt-get remove php5-mysql
Sudo  apt-get install php5-mysqlnd
Sudo service Apache2 restart
3
Gaurav Gupta

MySQLデータベースからデータを取得したら、型キャストを使用できます。

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

PHPは強く型付けされた言語ではないので、これはやや無意味ですが、もちろん、 settype などを介して問題のフィールドをintにキャストすることもできます。使用前。

関係なく、この「タイプ」情報を自動的に維持する方法(私が知っている)はありません。

1
John Parker

PHPのMySQL用のデフォルトライブラリには、この種のオプションはありません。 (int)やintval、(float)などの型キャストを使用する

0
Alex

pHPでは、([type])を使用して、$ somethingが整数であることを確認できます。これはSQLインジェクションに役立ちます。

例:

(int) $something;
0
quocnguyen

価格ごとに値を取得する場合は、列からデータ型を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など。

0
Renan Coelho

あなたがこの質問をした状況はわかりません。 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;
}

変数のデータ型をいくつかチェックして、それに応じてキャストすることができます。

この返信がお役に立てば幸いです。幸運を! :)

0
Syed