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