2017-02-05 84 views
0

我一直有報價與表更新有關的問題。我從一個表單發送一個包含多個值的Post,然後用它們更新表格。爲了使代碼正常工作,我需要用反斜槓($ColumnaString)和帶單引號的值($ValueString)包裝密鑰。這工作正常。我的問題是,偶爾我想更新爲NULL(當時$value=="")。但我現在的代碼不這樣做。有人可以發現問題嗎?使用變量將SQL更新爲NULL

$id_tag=trim($_POST['id']); 
foreach($_POST as $key=>$value){ 
    if ($key!="UpdatePeople"){ 
     $ColumnaString="`".$key."`"; 
     $ValueString="'".iconv('UTF-8', 'ISO-8859-1//TRANSLIT', utf8_encode($value))."'"; 
     if ($key=="In_Date" and $value=="") {$ValueString==NULL;} //Hereis my problem I think 
     $link->query("UPDATE MyTable SET ".$ColumnaString."=".$ValueString." WHERE `id`=".$id_tag.""); 
    } 
} 

回答

1

你可以檢查$ id_tag和創造的SQL代碼的適當部分

$str = ($id_tag ='') ? ' is null ' : ' = '.$id_tag; 

$link->query("UPDATE MyTable SET ".$ColumnaString." = ".$ValueString." WHERE `id`".str.""); 

和$淡水河谷

if ($key=="In_Date" and $value=="") { $ValueString = 'NULL' ;} //Hereis my problem I think 
+0

嘗試過沒有結果。爲了理解你的建議:你在問'$ id_tag'是否爲空,在這種情況下,你將變量'$ str'設置爲'nul',否則連接'='和'$ id_tag'的值,右?如果是這樣的話,我想我應該像這樣應用與'$ key ==「In_Date」'相關的值。 – CMArg

+0

答案更新.. – scaisEdge

+0

這就是它!單引號,雙引號,反引號會讓我發瘋......非常感謝! – CMArg

0

檢查你的數據庫,如果列被定義爲NOT NULL

+0

DB正常。允許空值(實際上,現在充滿了空值)。 – CMArg