我确定我错过了一些非常简单的东西,但我有一个带有一些是/否输入的表单 - 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'?
答案 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注入,提高查询执行时间,并且不再有引号头疼......