这是目前为止我的一些脚本:
$check = ("SELECT username FROM users WHERE username = '$us3r'");
$check2 = ("SELECT password FROM users WHERE username = '$us3r'");
$check3 = ("SELECT userID FROM users WHERE username = '$us3r'");
$check4 = ("SELECT userrole FROM users WHERE username = '$us3r'");
//Role
$role = mysql_query($check4);
$arr5 = mysql_fetch_row($role);
$roles = ($arr5[0]);
echo $roles;
if($roles = 1) {
//Username
$results3 = mysql_query($check);
$arr2 = mysql_fetch_row($results3);
$results4 = ($arr2[0]);
//Password
$results5 = mysql_query($check2);
$arr3 = mysql_fetch_row($results5);
$results6 = ($arr3[0]);
//UID
$id1 = mysql_query($check3);
$arr4 = mysql_fetch_row($id1);
$id = ($arr4[0]);
echo 1;
}
else if($roles = 2) {
//Username
$mresults3 = mysql_query($check);
$marr2 = mysql_fetch_row($mresults3);
$mresults4 = ($marr2[0]);
//Password
$mresults5 = mysql_query($check2);
$marr3 = mysql_fetch_row($mresults5);
$mresults6 = ($arr3[0]);
//UID
$mid1 = mysql_query($check3);
$marr4 = mysql_fetch_row($mid1);
$mid = ($marr4[0]);
echo 2;
};
然而,我的if/else有问题,如果由于某种原因,当我使用userrole为2的用户时,返回显示21,我希望它是11或22:/
您需要使用==
而不是=
进行比较:把
if($roles = 1)
if($roles == 1)
和
else if($roles = 2)
else if($roles == 2)
如果您使用赋值(=
)而不是比较(==
),它不仅会计算为真,而且还会改变变量
您正在设置$roles
的值而不是检查是否相等。尝试将代码更改为:
if($roles == 1) {
...
}
else if ($roles == 2) {
...
}
到处都是错字:
if($roles = 1) {
应该if($roles == 1) {
第一个是赋值,所以if()是赋值。新版本正在进行比较,并且可能会计算为false。
变化
if($roles = 1)
if($roles == 1)
相同else if($roles = 2)
那么有什么原因你不能这样做(没有if
/else
)?
$check = ("SELECT username FROM users WHERE username = '$us3r'");
$check2 = ("SELECT password FROM users WHERE username = '$us3r'");
$check3 = ("SELECT userID FROM users WHERE username = '$us3r'");
$check4 = ("SELECT userrole FROM users WHERE username = '$us3r'");
//Role
$role = mysql_query($check4);
$arr5 = mysql_fetch_row($role);
$roles = ($arr5[0]);
echo $roles;
//Username
$results3 = mysql_query($check);
$arr2 = mysql_fetch_row($results3);
$results4 = ($arr2[0]);
//Password
$results5 = mysql_query($check2);
$arr3 = mysql_fetch_row($results5);
$results6 = ($arr3[0]);
//UID
$id1 = mysql_query($check3);
$arr4 = mysql_fetch_row($id1);
$id = ($arr4[0]);
echo $roles;
嗯…
我不是一个大的PHP程序员,但if
语句不工作引起了我的注意:
$roles = ($arr5[0]);
if ($roles = 2) {
没有做你想做的事。这是一个set value等号。你所做的是将$roles
的值设置为2。
那么,为什么要在if
语句中设置一些东西呢?
你可以这样做:
if (($roles = $arr5[0]) == 2) {
这里,我正在设置$roles
的值,同时检查值。
在大多数现代编程语言中,您使用双等号来测试是否相等:
if ($roles == 2) {
PHP还有一个三重等号,它不仅可以测试相等,还可以测试相同。
if ($a === $b) {
不仅$a
和$b
彼此相等,而且它们也是相同的类型
让你知道,你的整个代码完全没有意义。
而不是两页,它必须只有几行。
$us3r = mysql_real_escape_string($us3r);
$sql = "SELECT * FROM users WHERE username = '$us3r'";
$res = mysql_query($sql);
$userdata = mysql_fetch_assoc($role);
// now you have all user's data in the $userdata array.
// echo $userdata['username']; for example will echo a username
// no need for the separate queries, no need to write the same code twice.
// and, finally
echo $userdata['userrole'];
//it seems the only thing your code does - echoing the actual userrole value: