第一次我会给你查询,然后我会告诉你我想要实现的目标,因为我可能会错误或太近。
mysql_query("UPDATE link_building SET
ID=$ID,Site=$Site,Date=$Date,Target_Site=$Target_Site,
Target_Contact_Email=$Target_Contact_Email,
Target_Contact_Name=$Target_Contact_Name,
Link_Type=$Link_Type,Link_Acquired=$Link_Acquired,
Notes=$Notes,Link_URL=$Link_URL WHERE ID=" . $ID);
我想要实现的目标是什么? 我想更新字段
("ID","Site","Date","Target_Site","Target_Contact_Email","Target_Contact_Name",
"Link_Type","Link_Acquired","Notes","Link_URL")
表link_building中的,其值存储在变量
中 ("$ID","$Site","$Date","$Target_Site","$Target_Contact_Email","$Target_Contact_Name",
"$Link_Type","$Link_Acquired","$Notes","$Link_URL")
但我只想更新Id等于$ ID的记录。
更新:我没有看到任何错误。 ITS REDIRECTS到link_building.php并显示成功消息,但不会更改MySQL表中的数据。
答案 0 :(得分:3)
尝试转义数据并删除ID的更新,因为它已经在您的条件中:
mysql_query("UPDATE link_building SET Site='".mysql_real_escape_string($Site)."',Date='".mysql_real_escape_string($Date)."',Target_Site='".mysql_real_escape_string($Target_Site)."', Target_Contact_Email='".mysql_real_escape_string($Target_Contact_Email)."', Target_Contact_Name='".mysql_real_escape_string($Target_Contact_Name)."', Link_Type='".mysql_real_escape_string($Link_Type)."',Link_Acquired='".mysql_real_escape_string($Link_Acquired)."', Notes='".mysql_real_escape_string($Notes)."',Link_URL='".mysql_real_escape_string($Link_URL)."' WHERE ID=" . intval($ID));
答案 1 :(得分:2)
如果您的列的名称类似于Target Site
(其中包含空格),则应该在查询中对其进行处理(这会强制您向其添加反引号)。此外,您还必须在存储字符串的其他内容的列中添加引号。您的查询应如下所示:
UPDATE
link_building
SET
ID = $ID,
Site = '$Site', // single quotes for values
Date = '$Date', // ...
´Target Site´ = '$Target_Site' // and ´ for fields
[...]
这应该解决为什么查询不起作用(另外:不是一点或格式化如何使 更具可读性)。
您没有提供相关信息,但请注意,在使用变量之前应始终清理变量(您的代码看起来不像您这样)以避免sql注入。您可以使用mysql_real_escape_string执行此操作,或者更好的是,开始使用prepared statements。
答案 2 :(得分:2)
首先,你忘记了你仍然需要引用你的字符串;
mysql_query("UPDATE link_building SET Site='$Site', Date='$Date',".
"Target_Site='$Target_Site', Target_Contact_Email='$Target_Contact_Email',".
"Target_Contact_Name='$Target_Contact_Name', Link_Type='$Link_Type',".
"Link_Acquired='$Link_Acquired', Notes='$Notes', Link_URL='$Link_URL' ".
"WHERE ID=$ID");
请注意所有字符串周围添加的'
。
奖金评论;你应该在将字符串传递给数据库之前使用mysql_real_escape_string()。