如何使用变量更新mysql数据库?

时间:2015-04-14 10:15:39

标签: php mysql sql

对于所有想要阅读这个问题的专家来说,这是一个基本问题,花了我几个小时的时间,

我想更新之前输入的行。正如在代码中可以看到的,我想更新改进列。另外,我希望借助最后一个用户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.但注意到我的数据库中的变化。

我迫切希望得到一个答案,如果它有效,我会选择它作为遇到同样问题的其他人的最佳答案。

4 个答案:

答案 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