对于所有想要阅读这个问题的专家来说,这是一个基本问题,花了我几个小时的时间,
我想更新之前输入的行。正如在代码中可以看到的,我想更新改进列。另外,我希望借助最后一个用户ID(自动增量主键条目)来做到这一点。但是,我在这里写下的代码在我的Mysql数据库中没有任何变化。
$sql = "
UPDATE users
SET Improvement='".$improvement."'
WHERE ORDER BY User_id DESC LIMIT 1
";
mysql_query($sql, $accounts);
正如你可以看到这是我在mysql中的表,
users CREATE TABLE `users` (
`Username` varchar(30) COLLATE latin1_general_ci NOT NULL,
`Age` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Education` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Department` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Favourite` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Preference` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Lpreference` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Level` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Question` varchar(20) COLLATE latin1_general_ci NOT NULL,
`Improvement` int(11) NOT NULL,
`User_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`User_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
我认为由于语法原因,我无法更新改进列。在我的页面中没有发生错误,即使$ improvement不等于0也没有任何反应。我回显$ improvement变量,它不等于0.但注意到我的数据库中的变化。
我迫切希望得到一个答案,如果它有效,我会选择它作为遇到同样问题的其他人的最佳答案。
答案 0 :(得分:1)
WHERE ORDER BY User_id DESC LIMIT 1
这在您的更新查询中是错误的。
使用像这样的更新查询
$sql = "UPDATE users SET Improvement='".$improvement."' WHERE User_id = (SELECT max(User_id) FROM users)";
从这里阅读手册update query
答案 1 :(得分:1)
尝试 -
$sql = "UPDATE users SET Improvement='".$improvement."' ORDER BY User_id DESC LIMIT 1";
mysql_query($sql, $accounts);
答案 2 :(得分:0)
您似乎正在尝试更新具有最高User_id
的行。您可以使用子查询执行此操作:
UPDATE users
SET Improvement = 'GIGANORMOUS'
WHERE User_id =
(
SELECT max(User_id)
FROM users
)
请注意,如果其他人插入了一行,则最新用户将会更改。最好存储新创建的用户ID以供以后参考。可以使用auto_increment
函数检索新插入行的LAST_INSERT_ID()
列。
答案 3 :(得分:0)
试试这个
//找到最大ID
$sql1 = "Select max(user_id) FROM users";
$result1 = mysql_query($sql1);
$row1 = mysql_fetch_array($result1);
$maxid = $row1['user_id'];
//像你这样进行更新
$sql2 = "UPDATE users SET Improvement='$improvement' WHERE User_id = '$maxid'";
$result2 = mysql_query($sql2);
以上代码应该有效,请询问答案是否清楚。我还建议你开始使用mysqli