• ベストアンサー

変数にNULLを代入したい

変数にNULLを代入してMYSQLに保存したいのですが、 $var = NULL; これでやってもMYSQLにはNULLで保存されずに、空欄のままになってしまいます。 MYSQLの構造は ヌル(NULL) → はい デフォルト値 → NULL にしてあります。 何が原因でしょうか?

  • yes87
  • お礼率74% (29/39)
  • PHP
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5646)
回答No.1

実行されるSQL文を確認してみてください。 おそらくですが、該当部分は '' と言う風になっていないでしょうか。 insert into テーブル名 (項目名) values ('') update テーブル名 set 項目名='' データに NULL を出力するには、SQL文で NULL と記述する必要があります。 insert into テーブル名 (項目名) values (NULL) update テーブル名 set 項目名=NULL SQL文の生成が以下のようですと NULL を出力できません。 $sql = "insert into テーブル名 (項目名) values ('$var')" $sql = "update テーブル名 set 項目名='$var'" もしそれが原因でしたら、以下のような関数で補ってください。 //クォートでくくる function fnc_quot($str){ if (is_null($str)){ return "NULL"; }else{ return "'$str'"; } } $sql = "insert into テーブル名 (項目名) values (".fnc_quto($var).")"; $sql = "update テーブル名 set 項目名=".fnc_quto($var) $var の値が NULL であれば "NULL" と言う文字列を返し、 そうでなければ $var の値を '' でくくって返します。 PHPにそのような関数が最初からあるのかも知れませんが、 内容はおそらくこのような処理をしているのだろう、 とわかっていただければと思います。

yes87
質問者

お礼

ご指摘の通りでした。 お陰さまでうまくいきました。 ありがとうございます。

関連するQ&A

  • 変数にnullを代入するには

    諸事情で、変数の値をNullにしたいのですが、 Sub a() Dim mystr As String mystr = "moji" '他の処理 mystr = Null End Sub だと、実行時エラー94になります。 多分、NULLは値じゃないから代入できないんだと思いますが、どうすれば変数をnullにできるのでしょうか? String型が問題であれば、何にすればいいですか?

  • null代入とunset()の違いについて

    null代入とunset()では、違いがあるのでしょうか? 検索してみたところ、下記ページにたどり着いたのですが、 結論としては、このページ下のコメントに書かれているとおり、 あまり気にしなくてよいでしょうか? ▽http://www.cpa-lab.com/tech/097 >利用者からは気にする必要が無い部分ではないかと <経緯> nullが分からないので、調べていました。 var_dump($x);//未定義では、NULL $x = NULL; var_dump($x);//NULLを代入しても、NULL $y = "hoge"; unset($y); var_dump($y);//unsetしても、NULL ここまできて、 「NULLを代入する」と、「変数破棄」の違いが、 分からなくなりました…

    • ベストアンサー
    • PHP
  • null 判定について

    javascriptに関して質問させて下さい。 accessのDBのデータをHTML上で表示・追加・削除・更新を行っています。 DB上のデータで空欄の項目を表示させたときに null が表示されます。 nullではなく空欄にしておきたいので、null判定チェックを 行っているのですが、ひっかかってくれない状態です。 ------------- var database; database = new ActiveXObject("ADODB.Connection"); database.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\\mydb.mdb;"); var mySql = "select 種別, 内容 from Aテーブル; var recordSet = database.Execute(mySql); var tempHtml = "種別=" + recordSet(0); if(recordSet(1) != null){ tempHtml = tempHtml + "<br>内容=" + recordSet(1); }else{ tempHtml = tempHtml + "<br>内容="; } (略) --------------- recordSet(0)=種別 recordSet(1)=内容 上記のように普通にnull判定をしてるつもりなのですが、 recordSet(1)=内容 が access上で空欄の場合=null もif文内に入り、 「null」という文字列が表記されます。 ※accessからとってきたデータではなく、  javascript内で null を設定した場合はチェックにひっかかっています。 var tmp = null; if(tmp == null){ alert("nullである"); } 何が悪いかお分かりになる方、ご回答お願いします。

  • 変数?配列?の値の代入[ ]と{}?

    こんにちは,よろしくお願いします。 JavaScriptで次のような変数の代入と思われる式の意味を教えてください。  var testValue = {};  var hsValue = []; いろいろ探してみましたがはっきりしたことがわかりません。すみませんがよろしくお願いします。

  • ジャバスクリプト 変数への代入について

    あるジャバスクリプトで書かれたウェブアプリケーションのコードを見て勉強しています。 その中で、理解できないコードがあったので、その意味を教えてください。 var a = .5; という感じに変数に数字が代入してあるように見えるのですが、数字の前にピリオド?が ついていて、数字の代入ではないようです。これは一体なにを表わしているのでしょうか? よろしくお願いします。

  • 「バリアント型でない変数に Null 値を代入しようとしました」と、ならないようにしたい

    access フォームのテキストボックスにID(数字)を手入力し、 テーブルから情報を引き出すというのを作っています。 問題は、一度入力した数字を消した後(バックスペースキーやデリートキーや切り取り)、エンターキーを押すと 「バリアント型でない変数に Null 値を代入しようとしました」 と表示されてしまう点です。 業務上支障はありませんが、この表示を無くしたいのです。 このIDは常に5桁である必要がある為、 フォーム上では定型入力を”99999”としております。 テーブル上ではテキスト型としております。 どのようにすれば、解決できるでしょうか。

  • 【変数消去】できるのかな??

    変数を宣言して値を入れて それを消す方法はありますか?? var a =1; この"a"という変数の入れ物じたいを スコープから消せますか?? nullを入れるとnullのままだし。 どうしたらいいか教えてください。

    • ベストアンサー
    • Flash
  • NULLについて

    NULLについて伺います。 現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、「not nullでテーブルを作り直せばいいのかな」と思い、一旦テーブルを削除してからもう一度作り直したのですが、エラーが変わりません。何かしらご教授頂ければ幸いです。よろしくお願いいたします。下記にテーブル構造と、その下にエラーを貼り付けておきます。(文字数の関係上、エラー全文は貼り付けられませんでした) mysql> desc input; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | text | NO | | NULL | | | movie_url | text | NO | | NULL | | | material_url | text | NO | | NULL | | | explanation | text | NO | | NULL | | +--------------+---------+------+-----+---------+----------------+ com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'title' cannot be null

    • ベストアンサー
    • MySQL
  • jQuery 変数の代入

    jQuery 変数の代入 jQueryを使って.nextを押すごとに#areaに表示する画像を img1.jpg、img2.jpg、img3.jpg、、、、 と切り替えたいと思っているのですが、 下記のように書いても変数が入ってくれません…。 どのように記述すればよいでしょうか? よろしくお願いします。 $(function(){ var i=1; $(".next").click(function(){ i++; $("#area").attr("src","img",i,".jpg"); }) })

  • ポインタ変数への値代入とアドレス値の代入について

    ポインタの扱いについて2点ほどありますが教えてください。 質問1:ポインタへの値代入    short data1[5];    short *pointa;     pointa = data1    (1)*(pointa + 1)=100;    (2)*pointa + 1 = 100;   という式があった場合、    (1)はdata1[1]の配列に100を代入する    (2)は命令違反的なことでコンパイルエラーが発生する   という理解でよろしいでしょうか? 質問2:アドレス値の代入    int var;(varのアドレス値は100番地)    int *ptr;    *ptr = &var; という式があった場合    ポインタ変数のptrには、番地が入るのではなく、100という数値が入るという判断でよろしいいでしょうか?    長い質問となっていますので質問1,2どちらか一方でも、余裕のある方がおりましたら両方についてご解答のほどよろしくお願いします。

専門家に質問してみよう