0

データベースに挿入しようとしている変数を NULL に設定していますが、何らかの理由で「0」として送信され続けます。挿入しようとしている列がNULLを許可し、デフォルトがNULLに設定されていることは確かです。私のコードは次のとおりです。

$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ('$insert')") or die(mysql_error());
4

3 に答える 3

5

警告:

mysql_*新しいコードに関数を使用しないでください。それらはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています。代わりに、プリペアドステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。

それをデータベースに入れNULLたい(そして本当に本当に使いたいmysqli_*)場合は、次のようにすることができます。

$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ("
                         .(($insert===NULL)?
                                 "NULL":
                                 "'".mysql_real_escape_string($insert)."'").
                     ")") or die(mysql_error());

ただし、これは不正なSQLインジェクションにつながる可能性があるため、お勧めしません

ボビーテーブルを見る


つまり、全体として、プリペアドステートメントを使用する必要があります。

次のようにMySQLiを使用できます。

        $dbHandle = new mysqli(...);
        $query = "INSERT INTO `table1` (column1) VALUES (?)";
        $statement = $dbHandle->prepare($query);
        if($statement){
            $statement->bind_param('s', $insert);
            if(!$statement->execute()){
                echo "Statement insert error: {$statement->error}";
            }
            $statement->close();
        }
        else {
            echo "Insert error: {$dbHandle->error}";
        }
于 2012-07-09T15:26:54.877 に答える
1

静的クエリに対してこれを試してください。

$query = mysql_query("INSERT INTO `table1` (column1) VALUES (NULL)")  or die(mysql_error());

変数の使用:

$insert= NULL;
$insert = ($insert===NULL)? 'NULL' : "'$insert'";
mysql_query("INSERT INTO `table1` (column1) VALUES ($insert)") or die(mysql_error());
于 2012-07-09T15:26:00.100 に答える
0

引用符なしで試してください。

$query = mysql_query("INSERT INTO `table1` (`column1`) VALUES (".$insert.")") or die(mysql_error()); 

クエリは次のようになります。

INTO table1( column1) 値 (NULL) に挿入します。

于 2012-07-09T15:24:33.737 に答える