我正在使用以下代码从xml文件更新数据库,一切都按预期工作,但现在我必须向表中添加2个以上的字段,并通过html表单手动更新数据。
当我运行表单时,我可以将数据插入“afk”和“remarks”字段,但是在运行以下查询时,它会清空字段。
$insert = "INSERT INTO `ecmt_memberlist` (characterID,name,startDateTime,baseID,base,title,logonDateTime,logoffDateTime,locationID,location,shipTypeID,shipType,roles,grantableRoles, last_modified) VALUES('$characterID','$name','$startDateTime','$baseID','$base','$title','$logonDateTime','$logoffDateTime','$locationID','$location','$shipTypeID','$shipType','$roles','$grantableRoles','$modifiedTS') ON DUPLICATE KEY UPDATE
name='$name',
startDateTime='$startDateTime',
baseID='$baseID',
base='$base',
title='$title',
logonDateTime='$logonDateTime',
logoffDateTime='$logoffDateTime',
locationID='$locationID',
location='$location',
shipTypeID='$shipTypeID',
shipType='$shipType',
roles='$roles',
grantableRoles='$grantableRoles',
last_modified = '$modifiedTS'";
是否可以告诉查询忽略已经存储在额外2x手动字段中的值并保持数据完好无损?
非常感谢答案 0 :(得分:0)
如果你告诉mysql更新一个空值的字段,它会,所以我可以看到你有三个选项(按我的喜好...):
ON DUPLICATE KEY UPDATE
之后);如果变量不为空,则仅添加字段; ON DUPLICATE KEY UPDATE
之后)以仅更新特定数量的字段。我不会真的推荐这个。顺便说一句,我还建议使用带有绑定变量的预准备语句来避免sql注入问题。
修改:第二个选项类似于:
$insert = "INSERT INTO `ecmt_memberlist` (characterID,name,startDateTime,baseID,base,title,logonDateTime,logoffDateTime,locationID,location,shipTypeID,shipType,roles,grantableRoles, last_modified) VALUES('$characterID','$name','$startDateTime','$baseID','$base','$title','$logonDateTime','$logoffDateTime','$locationID','$location','$shipTypeID','$shipType','$roles','$grantableRoles','$modifiedTS') ON DUPLICATE KEY UPDATE
name='$name'";
if (!empty($startDateTime))
{
$insert .= ", startDateTime='$startDateTime'";
}
// etc.
或者如果你有一个数组中的所有字段,你可以循环,将字符串添加到一个新数组并内爆。