2016-02-24 39 views
0

我確定我缺少一些非常簡單的東西,但是我有一個窗體,有幾個yes/no的輸入 - type = radio。我做了默認的NULL。 YES顯着,NO顯着,NULL表示用戶從未回答過這個問題。當我用用戶的選擇更新數據庫時,即使沒有選擇「否」,我的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被插入到數據庫,而不是「0」?

+0

什麼是列定義爲? – aynber

+0

我的列被定義爲tinyint(1)/ null = yes/default = NULL – Leslie

回答

0

允許NULL作爲你licensedYN列中的值...運行此查詢..

ALTER TABLE temp MODIFY licensedYN varchar(255) null; 

這將允許你存儲在你的數據庫空值。

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注入,提高查詢執行時間,不會再有報價頭痛...