MySQL插入/更新问题

时间:2013-08-26 01:10:13

标签: php mysql row

所以现在我正在为我的C#应用​​程序开发一个基本的会话系统。我有一个表,其中包含id,用户名,密码以及带有id,code,start的会话表。

两个表的id列都与登录的用户相关(用户表的id与会话表相同)。我想要做的是,当它设置会话时,它首先检查会话是否已经激活,如果是,那么它只会更新当前会话,如果没有,它将插入一个新会话。这很好用。我的问题是,无论我登录什么用户,因为id总是设置为0,所以我一次最多可以激活一个会话。

以下是我目前正在做的事情:

//get id of inputted user.
$id = getUserId($username);

//first check if a session already exists that is connected to this username
$query = mysql_query("SELECT * FROM sessions WHERE(`id`='$id')") or die("Couldn't query database: <br> <br> " . mysql_error());;

if(mysql_num_rows($query) > 0) {
    //session already exists, update it.
    mysql_query("UPDATE sessions SET `code`='$code', `start`='$date' WHERE(`id`='$id')") or die("Failed to update session: <br> <br> " . mysql_error());
} else {
    //session doesn't exist so lets create one
    mysql_query("INSERT INTO sessions (`id`,`code`,`start`) VALUES('$id','$code', '$date')") or die("Failed to create session: <br> <br> " . mysql_error());
}

我的getUserId函数:

function getUserId($username) {
    $query = mysql_query("SELECT * FROM users WHERE(`username`='$username')");
    $row = mysql_fetch_row($query);
    return $row[0];
}

我的问题,如果你还没有得到它。为什么即使getUserId()函数返回用户的正确id,'id'总是被设置为0?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

刚刚发现了我的错误。

我有这行调用setSession函数。

//set session
setSession($username. $password);

它应该只是解析用户名,但我忘记了取出$ password。因此,当它正在查找用户名'user1'时,它实际上将查找'user1password',因此返回0,因为这些细节中没有记录。