php mysql查询从以前的查询加载数据

时间:2015-06-15 12:58:28

标签: php mysql database insert

我正在编写一个脚本来将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 - 表中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";
}

在此之后,同一用户的新注册会在user_nr - 表格中的数据中保留registration权限。

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

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

脚本完成后是否执行了mysql_queries?

- &GT;为什么user_nr第一次总是为0?

2 个答案:

答案 0 :(得分: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";

答案 1 :(得分:0)

我找到了问题的答案。

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

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