質問

私はとして作成された顧客テーブルにNOT NULL制約を実装しようとしています

CREATE TABLE CUSTOMER(
     cust_id INT(5) NOT NULL AUTO_INCREMENT, 
     PRIMARY KEY(cust_id),
     first_name VARCHAR(25) NOT NULL,
     last_name VARCHAR(25) NOT NULL,
     email VARCHAR(25) NOT NULL,
     password VARCHAR(25) NOT NULL,
     gender VARCHAR(1) NOT NULL,
     city VARCHAR(25) NOT NULL,
     dob DATE NOT NULL,
     pin INT NOT NULL);

この後、私は値を渡すとしてそれを挿入していフォームから

$sql= "INSERT INTO customer(first_name,last_name,email,password,gender,city,dob,pin) VALUES('$first_name','$last_name','$email_add','$password','$gender','$city','$DOB','$pin')";
私は、フィールドの空白値を渡していた場合、

しかし、MySQLはそれらを挿入しているようですか?どのような問題がある可能性??

することができ
役に立ちましたか?

解決

$sql= "INSERT INTO customer(first_name,last_name,email,password,gender,city,dob,pin) VALUES('$first_name',".
($last_name?"'".$last_name."'":"NULL").
", '$email_add','$password','$gender','$city','$DOB','$pin')";

このは次のようになります。

VALUES('ahm',NULL,'email@a.ddr' ...

そしてのでNOT NULL何も挿入されます。

他のヒント

私は、Oracle :-)とは対照的に、実際のDBMSで、ブランク値とNULL値の区別があり、そのためだ疑います。

空白文字列がNOT NULLフィールドに完全に有効です。唯一の値は、あなたがNULL、...、覚えしようとすると、上のハングアップされNOT NULLフィールドに配置することはできないはず。はい、それはそれです。ヌル。 : - )

  

脇:(私はそのせいで問題のそれを使用することを拒否しただけではなかった場合でしょうか)Oracleは、NULL値として空のVARCHARを治療するための多くの衛星前に決断を下し、それはまだそれを見物

あなたのPHPコードは(空白にNULLになる)は、Oracleのような仕事をしたい場合は、

、あなたは文字列、(擬似コード)のようなものを事前処理する必要があるとしている。

if $first_name == "":
    $first_name = "NULL"
else:
    $first_name = "'" + $first_name + "'"
: : :
$sql= "INSERT INTO customer(" +
    "first_name," +
    "last_name," +
    "emailpassword," +
    "gender," +
    "city," +
    "dob," +
    "pin" +
    ") VALUES (" + 
        $first_name + "," +
        "'$last_name'" + "," +
        "'$email_add'" + "," +
        "'$password'" + "," +
        "'$gender'" +
        ",'$city'" + "," +
        "'$DOB'" + "," +
        "'$pin'" +
    ")";

などもNULLとすることができる他のフィールドのために。私は$first_nameのためにそれを行う方法を示してきました。

これINSERT文の中で、あなたのfirst_name列がNULLまたは単一引用符で囲ん$first_nameの値のいずれかになります。

すべてのこれらのフィールドがチェックおよび/またはSQLインジェクション攻撃を防ぐために修正する必要がある点に注意してください。

ここではドキュメントからのいくつかの追加情報:

http://dev.mysql.com /doc/refman/5.0/en/problems-with-null.htmlする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top