我正在编写一个脚本来将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?
答案 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
中。
因此,如果您向数据库中添加内容,请在添加内容后重新获取数据。