2

我有一个包含 13 个字段的数据库表,其中 9 个字段由用户输入的表单填充。插入新行可以正常工作,但我在更新现有行时遇到问题。我问了一个朋友的意见,他帮不上忙。

我需要更新所有用户可调整的字段,因为每个调整都可以涵盖一个到所有字段,因此需要使用多个 SET 语句进行查询。更新查询是

$query = sprintf("UPDATE tour 
  SET StopNum=%d, SET ForwardLink=%d, SET BackLink=%d, SET LeftLink=%d, 
  SET RightLink=%d, SET Name= '%s', SET Lat=%f, SET Lon=%f, SET Heading=%d 
  WHERE FileName='%s'", $_POST['curStop'], $_POST['nextStop'], $_POST['prevStop'],
  $_POST['leftStop'], $_POST['rightStop'], $location, $latitude, $longitude, 
  $heading, $image);

使用上述查询,我​​在示例更新中得到以下打印输出:

UPDATE tour SET StopNum=0, SET ForwardLink=0, SET BackLink=0, SET LeftLink=0, SET RightLink=0, SET Name= 'Start', SET Lat=98.154000, SET Lon=-75.214000, SET Heading=100 WHERE FileName='../panos/photos/1-prefix_blended_fused.jpg'

根据mysql错误消息,我需要查看手册以获取正确的语法以使用near

'SET ForwardLink=0, SET BackLink=0, SET LeftLink=0, SET RightLink=0, SET Name= 'S' at line 1

字段 'Name' 被定义为一个可为空的 varchar(250) 容器,因此 5 个字母的存储空间绰绰有余。

4

1 回答 1

4

语法应该是:

UPDATE table SET column=1,column1=2,column2=3 WHERE filename='asdf'
于 2012-05-31T19:30:07.163 回答