2016-07-26 12 views
0

空で(フォーム入力後に)データベースを更新すると、変数をNULLに設定しようとしていますが、instedフィールドにNULLを0として入れ続けます。 (フィールドは整数/ NULLに設定されています)私も$ eloleg = "NULL"を試しましたが、どちらもうまくいきませんでした。変数を使用してmysqlの値をNULLに設定する方法は?

 if (!empty($_POST["eloleg"])) { 
      $eloleg = mysql_real_escape_string($_POST["eloleg"]); 
     } 
     else { 
      $eloleg = NULL; 
     } 

     mysqli_query($connection, "UPDATE $table SET eloleg='$eloleg' WHERE date='$eredeti_date'"); 
+5

パラメータバインディングを使用します。それ以外の場合は、SQLインジェクションが可能です。ヌル値は引用符で囲まれませんが、バインディングによってそれが処理されます。 – aynber

+1

dbスキーマとは何ですか?NULL値を受け入れますか?さらに重要な点は、MySQL APIを混在させていることです。どのAPIを使用して接続するのか分かりません。 –

+0

**警告**:mysqliを使用する場合、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

答えて

0

私はあなたがこれやってみたかったのだと思う:

$eloleg = 'NULL'; 

mysqli_query($connection, "UPDATE $table SET eloleg=$eloleg WHERE date='$eredeti_date'"); 

をしかし、他の人が言ってきたように、あなたは、SQLインジェクションなどの書式設定の落とし穴を避けるために、あなたのクエリを構築するためにパラメータ化APIを使用する必要があります。

+0

私はあなたが最初の文 – Panda

+3

の後にセミコロンを忘れてしまったと思うし、OPミキシングAPIについて;-)おそらく最初に失敗しているか、それに貢献しているのかもしれない。 –

+2

@luweiqi私はトレーニングでPHPの人ではありませんが、実際のクエリではNULLがエスケープされていることがわかりましたが、これは間違いです。 –

関連する問題