如何更新MySQL中没有主键的表中的特定行?

时间:2016-07-04 09:53:26

标签: php mysql sql-update row primary-key

我正在尝试在MySQL数据库表中使用UPDATE查询。我有主键在表中自动递增但我不想在执行此查询时使用此键。这是因为当删除记录时,此列不会重新开始计数,因此表中存在间隙。例如,如果我删除第25行然后插入新行,则该行的ID将为26.所以回到我的问题,我想知道如何编辑一个特定记录/行的值。我尝试过以下方法:

UPDATE `table_name` SET `first_Name` = "Robert" WHERE (SELECT * FROM `employees` LIMIT 1,1)

这是我尝试仅更新第二行中的firs_Name。但它不起作用。有一些语法错误。有没有其他方法可以做到这一点?或者我可以解决自动递增列的问题(我更喜欢忽略此问题的答案)。

提前致谢!

1 个答案:

答案 0 :(得分:1)

你的用户表看起来像这样

id    |   first_name
1     |   Robert
2     |   Sam

现在你想编辑SAM,所以他被称为Samuel。

#1

打印用户

Select * From Users

然后构建一个Loop以将用户返回到表中。然后你可以用它做你的行动

#2

<?php

if(isset($_GET['userid']))
{
    if(isset($_POST['update']))
    {
        mysql_query("UPDATE Users SET first_name = '".$_POST['first_name']."' where id=".$_GET['userid']." LIMIT 1");
    }
    else
    {
        $get_user_sql = "SELECT * FROM Users WHERE id = ".$_GET['userid']." LIMIT 1";
        $query_user = mysql_query($get_user_sql);
        $user = mysql_fetch_assoc($query_user);
        print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
        print '<input type="text" name="first_name" id="first_name" value="'.$user['first_name'].'" />';
        print '<input type="submit" />';
    }
}
else
{
    $sql = "SELECT * FROM Users";
    $query = mysql_query($sql);
    while($row = mysql_fetch_assoc($query))
    {
        print '<a href="?userid='.$row['id'].'">edit user <b>'.$row['first_name'].'</b></a><br />';
    }
}

?>