php mysql 查询从上一个查询加载数据

php mysql query loading data from previous query

我正在编写脚本以将 users 添加到数据库。 同时,新注册用户总是在注册 course.

所以我得到的是我的脚本的第一部分,基本上是这样做的

(为了简化此处删除了大量用户输入检查 - 之前定义的所有变量):

$user =
"INSERT INTO users (
    name,
    firstname,
    date_of_birth,
    email,
    # etc ...
) VALUES (
    '$name',
    '$firstname',
    '$date_of_birth',
    '$email',
    # etc ...
)";

if (mysql_query($user) === TRUE) {
    $_SESSION['infotext'] = "User added successfully";
    $success_user = 1;
} else {
    $_SESSION['infotext'] = "Error: " . $sql . "<br />" . mysql_error();
}

到目前为止这有效。 在数据库中,user_nr 设置为 AUTO_INCREMENT

# get the users data 
$user_Arr = mysql_query("SELECT * FROM users");

if ($success_user == 1) {
        while ($row = mysql_fetch_assoc($user_Arr)) {
            if ($row['email'] == $email) {

                # save user_nr of the registered user to $user_nr
                $user_nr = $row['user_nr'];
            }
        }

        $register = "INSERT INTO registration (
            user_nr,
            user_name, 
            email, 
            etc ...
        ) VALUES (
            '$user_nr', 
            '$name $firstname' , 
            '$email', 
            etc ...
        )";

        if (mysql_query($register) === TRUE) {
            header('Location: index.php');
        } else {
            $_SESSION['infotext'] = "Error: " . $sql . "<br />" . mysql_error();
        }
}

之后我检查了我的数据库,user_nr 设置为 users 中的正确数字。

registration-table中user_nr在用户第一次注册时始终为0,但所有其他数据都是正确的。

如果同一用户再次注册第二次使用,则用户数据将通过以下方式更新:

$update_user = 
    "UPDATE kunden SET 
        name='$name',
        firstname='$firstname',
        etc ...
        # no redefinition of the email here
    WHERE email='$email'";

if (mysql_query ($update_user) === TRUE) {
    $_SESSION['infotext'] = "Registration successfull";
}

在此之后,同一用户的新注册拥有 registration-table.

中其数据的权利 user_nr

似乎对 users WHERE email='$email' 的调用没有得到 - 刚刚从数据库中查询的值

我是否需要等待第一个查询在某个时候完成?

或者是mysql_queries在脚本完成后执行?

--> 为什么user_nr第一次总是0?

不调试很难说,但我怀疑

 if ($row['email'] == $email) {
            # save user_nr of the registered user to $user_nr
            $user_nr = $row['user_nr'];
        }

($row['email'] == $email) 比较不正确。尝试打印出 $email 和 $row['email'] 看看它们是否有正确的数据 喜欢

echo "row['email'] : ".$row['email']." email:".$email. " Comp:" . ($row['email'] == $email) : "TRUE":"FALSE";

我找到了问题的答案。

在添加新用户之前,我通过 $user_Arr 在我的代码中获取了用户数据。 所以新用户不在$user_Arr得到的数据中。

因此,如果您向数据库添加内容,请务必在添加内容后重新获取数据