0
所以现在我正在为我的C#应用程序开发一个基本的会话系统。我有一个带有id,用户名,密码和带有id,code,start的会话表的表格。MySQL插入/更新问题
这两个表的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?
有什么建议吗?
建议,[**不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 –
是的,我知道我不应该。但为此目的,我并不担心在这一点上转换。 –
如果您将函数切换为返回assoc_array并使用$ row ['id'],会发生什么情况?或者只选择ID,而不是* ..? – James