我在獲取MySql表的userid
列中的值並將其存儲在會話中時出現問題。如何在註冊後爲新創建的用戶在會話變量中存儲用戶標識
下面是詳細的問題:
我有很多表的數據庫,但讓我們考慮2現在。
表名登錄:
| userid | username | password
表名person_details:
比這| firstname | lastname | dob
其他,我有(考慮)2頁與2種形式(1在每一頁) ;
一個用於登錄和其他登錄後的細節。
我的person_details
表的userid
是login
表的外鍵。
我想是當用戶註冊時,提供username
和password
應該與目前正在精細獨特(自動生成)userid
保存在login
表。*
現在的問題是在這部分;當用戶註冊時,他/她被導向person_details
表格,並在填寫表格後點擊提交,數據應該保存到person_details
表,其具有與'登錄'表中相同的'用戶標識符'。
In order to do that I think i have to store the 'userid' in the session variable so that it can be used as a parameter while inserting the value to 'person_details' table but i am not able to pass that value.
這裏是我的代碼:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "login")) {
$insertSQL = sprintf("INSERT INTO secure_login (username, password) VALUES (%s, %s)", GetSQLValueString($_POST['username'], "text"), GetSQLValueString($_POST['password'], "text"));
mysql_select_db($database_mydatabase, $mydatabase);
$Result1 = mysql_query($insertSQL, $mydatabase) or die(mysql_error());
$obj = @mysql_fetch_object($Result1);
$_SESSION['userID']=$obj->userid;
我想這太,但沒有運氣
mysql_select_db($database_mydatabase, $mydatabase);
$Result1 = mysql_query($insertSQL, $mydatabase) or die(mysql_error());
$_SESSION['userID']=$Result1->userid;
這是試圖當我得到的錯誤:
Cannot add or update a child row: a foreign key constraint fails (`mydatabase`.`personaldetails`, CONSTRAINT `personaldetails_ibfk_2` FOREIGN KEY (`userid`) REFERENCES `secure_login` (`userid`) ON DELETE CASCADE ON UPDATE CASCADE)
我沒有會話就試過了,這沒問題,dat a被保存到表person_details
,自動生成userid
。
請讓我知道你是否需要代碼或任何其他信息。
編輯我得到了會話變量中的用戶ID,所以我的一半問題都解決了。現在我需要做的就是爲person_details設置相同的用戶標識。
P.S.當我在這裏發佈這個問題時,我希望得到一個答案,但我得到的只是一些訪問和一個爲我編輯的人(我認爲他非常享受,因此他編輯了我的一些評論作爲代碼),謝謝你的朋友。
首先,感謝您的回覆。其次,我想知道,你建議使用mysqli而不是mysql,只是爲了最佳實踐,否則會幫助我解決問題。並沒有捕獲任何使用插入,我用$ _SESSION ['userID'] = mysql_insert_id();從表中獲取用戶ID。除此之外,我正在使用正確的順序,因爲它工作正常,如果我跳過第二個表的用戶ID。我試圖儘可能地解釋它,但問題本身有點複雜。 –
不推薦使用mysql擴展,所以你不應該在mysqli上使用它。在更高版本的MySQL中,它有字符串轉義問題和持續連接問題。 –