Php id未正确更改

Php id未正确更改,php,mysql,Php,Mysql,如果我使用此表注册用户: CREATE TABLE IF NOT EXISTS `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `md5_id` VARCHAR(200) NOT NULL, `full_name` TINYTEXT CHARACTER SET latin1 COLLATE latin1_general_ci NOT NUL

如果我使用此表注册用户:

CREATE TABLE IF NOT EXISTS `users` 
  ( 
     `id`              INT(11) NOT NULL AUTO_INCREMENT, 
     `md5_id`          VARCHAR(200) NOT NULL, 
     `full_name`       TINYTEXT CHARACTER SET latin1 COLLATE latin1_general_ci 
     NOT NULL, 
     `user_name`       VARCHAR(10) NOT NULL, 
     `user_email`      VARCHAR(30) NOT NULL, 
     `user_level`      TINYINT(4) NOT NULL DEFAULT '1', 
     `pwd`             VARCHAR(220) NOT NULL, 
     `nationality`     VARCHAR(30) NOT NULL, 
     `department`      VARCHAR(20) NOT NULL, 
     `birthday`        DATE NOT NULL, 
     `date`            DATE NOT NULL DEFAULT '0000-00-00', 
     `users_ip`        VARCHAR(200) NOT NULL, 
     `activation_code` INT(10) NOT NULL DEFAULT '0', 
     `banned`          INT(1) NOT NULL, 
     `ckey`            VARCHAR(200) NOT NULL, 
     `ctime`           VARCHAR(220) NOT NULL, 
     `approved`        INT(1) NOT NULL DEFAULT '1', 
     PRIMARY KEY (`id`) 
  ) 
ENGINE=INNODB 
DEFAULT CHARSET=latin1 
AUTO_INCREMENT=3;
登录到“myaccount.php”后,使用以下代码将值输入另一个表,即语言表:

if (empty($_SESSION['$user_id'])) { // user not logged in; redirect to somewhere else }
    if (!empty($_POST['doLanguage']) && $_POST['doLanguage'] == 'Submit') {
        $result = mysql_query("SELECT `id` FROM users WHERE `banned` = '0' order by id desc");
        list($id) = mysql_fetch_row($result);
        session_start();
        $_SESSION['user_id'] = $id;
        foreach ($_POST as $key => $value) if (empty($err)) {
            for ($i = 0;$i < count($_POST["other"]);$i++) {
                $native = mysql_real_escape_string($_POST['native'][$i]);
                $other = mysql_real_escape_string($_POST['other'][$i]);
                $other_list = mysql_real_escape_string($_POST['other_list'][$i]);
                $other_read = mysql_real_escape_string($_POST['other_read'][$i]);
                $other_spokint = mysql_real_escape_string($_POST['other_spokint'][$i]);
                $other_spokprod = mysql_real_escape_string($_POST['other_spokprod'][$i]);
                $other_writ = mysql_real_escape_string($_POST['other_writ'][$i]);
                $sql_insert = "INSERT into `language`
(`user_id`,`native`,`other`,`other_list`,`other_read`, `other_spokint`
,`other_spokprod`,`other_writ`  )
VALUES
('$id','$native','$other','$other_list','$other_read','$other_spokint',
'$other_spokprod','$other_writ') ";
                mysql_query($sql_insert, $link) or die("Insertion Failed:" . mysql_error());
            }
            header("Location: myaccount.php?id=' . $_SESSION[user_id] .'");
            exit();
        }
    }
}
if(空($\u会话['$user\u id']){//用户未登录;重定向到其他地方}
如果(!empty($\u POST['doLanguage'])和&$\u POST['doLanguage']=='Submit'){
$result=mysql\u query(“从用户中选择'id',其中'banked'='0'按id desc排序”);
list($id)=mysql\u fetch\u行($result);
会话_start();
$\会话['user\u id']=$id;
foreach($\发布为$key=>$value)if(空($err)){
对于($i=0;$i
例如,我注册id=3(在用户表中),然后重新登录id=1并在语言表中更改其详细信息,然后语言表中的用户id(用户表中id的外键)在应该为1时为3。为了简单起见,users表中的id应该与language表中的user\u id相同。但是当返回并更改languages表中的数据时,用户id与上次注册的id保持相同

请帮忙

您有以下查询:

$result = mysql_query("SELECT `id` FROM users WHERE `banned` = '0' order by id desc");

它的目的是什么?您正在将它找到的第一个值分配给
$id
,但查询不查找用户名或其他任何内容。您可能希望使用
$\u SESSION['$user\u id']
而不是
$id
作为您的用户id。

我用您在值中建议的值替换了$id,但仍然没有成功