表单故障:单选按钮 - >是,否或null

时间:2016-02-24 17:37:38

标签: php mysqli

我确定我错过了一些非常简单的东西,但我有一个带有一些是/否输入的表单 - type = radio。我已经使默认为NULL。 YES很重要,NO很重要,NULL表示用户从未回答过问题。当我使用用户的选择更新数据库时,即使未选择NO,我的NULL值也会被0覆盖。我已经读过,如果用户没有选择YES或NO,那么变量未设置,

$licensedYN = (isset($_POST['licensed'])&&!empty($_POST['licensed']))?$_POST['licensed']:NULL;
    $malpracticeYN = (isset($_POST['malpractice']))?$_POST['malpractice']:NULL;

$sqlAdd = $db->query("INSERT INTO temp (licensedYN,malpracticeYN) VALUES ('$licensedYN','$malpracticeYN')");

如何将NULL插入DB而不是'0'?

2 个答案:

答案 0 :(得分:0)

允许NULL作为licensedYN列中的值...运行此查询..

ALTER TABLE temp MODIFY licensedYN varchar(255) null;

这将允许您在数据库中存储空值。

答案 1 :(得分:0)

在您的情况下,您只需从查询中删除引号,并将其放在值中,如下所示:

$licensedYN = (isset($_POST['licensed']) && !empty($_POST['licensed']))? "'{$_POST['licensed']}'" : 'NULL';
$malpracticeYN = (isset($_POST['malpractice'])) ? "'{$_POST['malpractice']}'": 'NULL';

$sqlAdd = $db->query("INSERT INTO temp (licensedYN,malpracticeYN) VALUES ($licensedYN,$malpracticeYN)");

在任何情况下,您都应该考虑使用预准备语句而不是连接字符串。你可以防止许多问题,如sql注入,提高查询执行时间,并且不再有引号头疼......

相关问题