2016-05-21 10 views
0

MySQLの列の1つにゼロを保存するクエリがあります。MySQL INT NULLにゼロを挿入できません

カラムをNULL = noおよびDefault = noneに設定しました。しかし、私は0を保存するときに、その構造体を持っていたときに私のクエリがうまくいきませんでした。だから私はnullに値を変更します。しかし、0(ゼロ)をデータベースに保存するときには、まだNULLを保存しています。

カラムをNULL = noに設定し、Defaultに設定したところ、ローカルホストで正常に動作していましたが、ホスティングクエリが挿入されていませんでした。だから私はそれをnullに変更します。

MySQLバージョン5.6.30

クエリ

$mysqli->query("INSERT INTO categories(cname, cat_description, cat_ parent) VALUES ('$cname', '$description', '0')"); 
+0

あなたが試したクエリはどこですか? –

+0

英語が母国語ではないかもしれないことに感謝しますが、あなたが言っていることを正確に理解することは非常に難しいです。あなたのクエリと結果をコピー&ペーストして、あなたが期待していた結果を示して、実際に何が起こっているのかを明確にするのに役立ちます。 – eggyal

+0

"*カラムがNULLに設定されていたとき=いいえ、デフォルト*":デフォルト...デフォルトでは何ですか? – Arcesilas

答えて

4

あなたが実際にinteger列にstringを挿入しようとしています。 MySQLはこれを受け入れません。そして、それはすべきではありません。

整数を挿入します。

$mysqli->query("INSERT INTO categories(cname, cat_description, cat_ parent) VALUES ('$cname', '$description', 0)"); 

だけ0の前後に引用符を削除します。

+0

デフォルト設定では、MySQLは文字列をint([sqlfiddle](http://sqlfiddle.com/#!9/aaf44/1))にキャストします。 –

+0

しかし、ホスティングプロバイダがデフォルト設定を使用しているかどうかを知る方法はありません(実際には使用しないでください)。 – Arcesilas

+0

ありがとうございます。通常、他のホスティングプロバイダで特許を使用していないと、自動的に0を保存しません。厳密なmysqlが有効になっているので、これはhostgatorでこの問題を起こしていますか? – Jordyn

関連する問題