PHP如果/ else用户在数据库集变量上存在为0或1

时间:2012-07-06 22:31:39

标签: php mysql if-statement

我有这段代码来检查用户是否存在于数据库中。如果退出,我想将$account分配给1,如果不退出则分配0。我认为这段代码可以正常工作,但它会不断设置$account0,所以我觉得我错过了一个技巧。任何帮助将不胜感激。

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");

 if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db(DB_NAME, $con);

$sql="SELECT user_name FROM users";

$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if ($row['user_name'] == '$user_name'){
$account = 1;
}else{
        $account = 0;}

由于

4 个答案:

答案 0 :(得分:3)

如果使用单引号',则不能将变量放在字符串中(加上它不是必需的!)。下面纠正了这个问题,并将你的if / else语句缩短为一行。

$account = $row['user_name']==$user_name ? 1 : 0;

答案 1 :(得分:2)

我认为这可以做得更好:

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");

 if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db(DB_NAME, $con);

$account = (int)mysql_query("SELECT COUNT(*) FROM Users WHERE user_name='$user_name'");

这应该存储正确的帐户值,即如果找到用户则为1,否则为0。

答案 2 :(得分:1)

您的查询正在返回多行,并且您正在与第一行进行比较。您需要执行类似以下操作来指定单个用户(请参阅sql语句更改):

$sql="SELECT user_name FROM users WHERE user_name='".$user_name."' ";

$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if ($row['user_name'] == '$user_name'){
$account = 1;
}else{
        $account = 0;}

另外,要迭代行,您可以从http://php.net/manual/en/function.mysql-fetch-assoc.php

中看到此示例
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

答案 3 :(得分:1)

更改:

if ($row['user_name'] == '$user_name'){

为:

if ($row['user_name'] == $user_name){

单引号表示字符串。因此,通过将变量放在单引号之间,您尝试将$row['user_name']$user_name匹配(不是$ user_name变量中的字符串 - 而是STRING“$ user_name”)。

双引号也表示字符串,但您可以将变量放在双引号之间,$row['user_name']将匹配$user_name(变量内的字符串)。

所以,以下两个例子是正确的,你的不是:

if ($row['user_name'] == $user_name){
if ($row['user_name'] == "$user_name"){