9
function save($gmt, $name, $address, $phone, $remark)
{
    $query= "INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES ('$gmt', '$name', '$address', '$phone', '$remark')";
    mysql_query($query);
}

ここでは、住所、電話番号、およびコメントを指定できますNULLNULL空の文字列を挿入する代わりに、変数がに設定されNULL、列がnull許容である場合は常に保存する必要があります。

NULLPHPを使用してデータベースに値を挿入するにはどうすればよいですか?

4

5 に答える 5

10

これはPHPソリューションですが、mysqlは非推奨であるため、mysqliを使用する必要があります。mysqliの詳細をお読みくださいまた、 SQLインジェクションを考慮する必要があります

function save($gmt, $name, $address, $phone, $remark)
{
  if(empty($phone)){
   $phone = 'NULL';
  }else{
   $phone = "'".$phone."'";
  }
  if(empty($remark)){
   $remark = 'NULL';
  }else{
   $remark = "'".$remark."'";
  }
    $query= "INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES ('$gmt', '$name', '$address', $phone, $remark)";
    mysql_query($query);
}
//tests
save("a", "b", "c", "", "")."<br>";
save("a", "b", "c", "d", "")."<br>";
save("a", "b", "c", "d", "e")."<br>";
/*
INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES ('a', 'b', 'c', NULL, NULL)
INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES ('a', 'b', 'c', 'd', NULL)
INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES ('a', 'b', 'c', 'd', 'e')
*/
?>

デモ

于 2013-01-30T10:13:25.283 に答える
5

プリペアドステートメントに切り替えてみてください(ボーナスとしてSQLインジェクションの傾向が少なくなります)。

function save($gmt, $name, $address, $phone, $remark)
{
    if(!isset($phone) || empty($phone)) { $phone = null; }
    if(!isset($remark) || empty($remark) { $remark = null; }

    $db = new PDO(...);

    $stmt = $db->prepare("INSERT INTO `user` (`gmt`, `name`, `address`, `phone`, `remark`) VALUES (:gmt, :name, :address, :phone, :remark)");
    $stmt->bindValue("gmt", $gmt, PDO::PARAM_STR);
    $stmt->bindValue("name", $name, PDO::PARAM_STR);
    $stmt->bindValue("address", $address, PDO::PARAM_STR);
    $stmt->bindValue("phone", $phone, PDO::PARAM_STR);
    $stmt->bindValue("remark", $remark, PDO::PARAM_STR);
    $stmt->execute();
}

これによりnull、MySQLで値が正しく処理されます

于 2013-01-30T09:46:41.370 に答える
4

PHPはNULLを出力しません-それは単なる空の文字列です。したがって、あなたの例''では、SQLで再び空の文字列であるを挿入しようとします。

(引用符なしで)使用する必要がありますNULL

そして、それを達成するためのベストプラクティスは、これを行うデータベース抽象化レイヤーを備えたORMまたはPHPフレームワークを使用することです。

于 2013-01-30T09:42:20.947 に答える
2

三項演算子を使用すると、これも使用できます

$add = ($address == '' ? NULL : $address);
$phn = ($phone == '' ? NULL : $phone);
$rmk = ($remark == '' ? NULL : $remark);
于 2014-01-03T09:43:29.213 に答える
-1

フィールドはNULLにすることができます

-> qtd_aulas_previstas

-> qtd_aulas_dadas

$qtd_aulas_previstas = ( empty($qtd_aulas_previstas) ? 'NULL' : "'".$qtd_aulas_previstas."'");
$qtd_aulas_dadas     = ( empty($qtd_aulas_dadas)     ? 'NULL' : "'".$qtd_aulas_dadas."'");


//insere os dados na tabela
$inserir_tb = mysqli_query($conexao, "INSERT INTO tb_turma_bimestre VALUES('', '$cod_turma', '$cod_bimestre', $qtd_aulas_previstas, $qtd_aulas_dadas, '$data_abertura', '$data_encerramento', '$date_time', '$nome_login')")or die("Error2: " .mysqli_error($conexao));


于 2020-06-18T15:07:33.753 に答える