データベースに挿入しようとしている変数を NULL に設定していますが、何らかの理由で「0」として送信され続けます。挿入しようとしている列がNULLを許可し、デフォルトがNULLに設定されていることは確かです。私のコードは次のとおりです。
$insert = NULL;
$query = mysql_query("INSERT INTO `table1` (column1) VALUES ('$insert')") or die(mysql_error());
警告:
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());
ボビーテーブルを見る
つまり、全体として、プリペアドステートメントを使用する必要があります。
次のように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}";
}
静的クエリに対してこれを試してください。
$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());
引用符なしで試してください。
$query = mysql_query("INSERT INTO `table1` (`column1`) VALUES (".$insert.")") or die(mysql_error());
クエリは次のようになります。
INTO table1
( column1
) 値 (NULL) に挿入します。