我一直遇到与表更新相关的引号问题。我正在从表单发送一个包含多个值的帖子,然后用它们更新表格。为了使代码生效,我需要用反斜杠($ColumnaString
)包装密钥,并用单引号($ValueString
)包装值。这很好用。我的问题是偶尔我想更新为NULL(当$value==""
时)。但我目前的代码不这样做。有人能发现问题吗?
$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."");
}
}
答案 0 :(得分:1)
你可以检查$ id_tag并创建一个正确的sql代码部分
$str = ($id_tag ='' ) ? ' is null ' : ' = '.$id_tag;
$link->query("UPDATE MyTable SET ".$ColumnaString." = ".$ValueString." WHERE `id`".str."");
和$ vale
if ($key=="In_Date" and $value=="") { $ValueString = 'NULL' ;} //Hereis my problem I think
答案 1 :(得分:0)
检查数据库是否将列定义为NOT NULL