5

私のMySQLテーブルには、trueまたはfalseの値を格納するために使用するtinyint(1)値が含まれています。

私は次のPHP変数を持っています:

$name = '';
$description = '';
$active = true;

これで、SQLクエリは次のようになります。

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('$name', '$description', $active) ";

これは、$activeの値がtrueの場合にのみ機能します。アクティブな変数がfalseになるとすぐに、phpは0ではなく空の文字列を挿入するため、クエリは失敗します。

そのようなクエリでfalseを使用するための最良の方法は何ですか?

falseを手動で「0」文字列に変換する必要がありますか?すぐにPHP側で刺し傷を使用する方が良いですか?言い換えれば、次のように宣言します。$ active = '1'; または、どういうわけかPHPに常にfalseを「0」文字列に変換させることができますか?

ありがとうマイケル

4

3 に答える 3

6

変数をintに変換します。

intval($active)
于 2011-12-26T15:25:50.377 に答える
5

まず最初に、mysql_real_escape_stringまたはmysqli_real_escape_stringを使用して値をエスケープするか、SQLインジェクションを回避するためにデータベース接続に適した他の方法を使用する必要があります。次に、falseに関する特定の質問に対して、次のようにします。

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('$name', '$description', ".($active?1:0) .")";

または、$ activeをintにキャストすると、この作業も実行されます。

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('$name', '$description', ".((int) $active)).")";
于 2011-12-26T15:25:32.780 に答える
0

mysql_real_escape_string関数を使用してください...

$query = "INSERT into my_table (my_name, my_description, active) VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string($description)."', ".mysql_real_escape_string (((int) $active))).")";
于 2011-12-26T15:49:58.970 に答える