使用if ..语句检查表中是否存在用户

时间:2014-04-18 02:35:32

标签: php mysql

我在本地服务器上创建一个登录,在添加任何数据之前检查表中是否存在用户。

这是我用来选择用户信息的代码:

$name1 = mysql_real_escape_string($_POST['studentname']);
$num = mysql_real_escape_string($_POST['studentnum']);
$qw = "SELECT name FROM students WHERE name = '$name1'";
$qw1 = "SELECT studentnum FROM students WHERE studentnum = '$num'";
$namematch = mysql_query($qw) or die(mysql_error());
$nummatch = mysql_query($qw1) or die(mysql_error());

但是,如果从每个查询中检索数据,我对于if()语句应该输入什么来注册为TRUE我感到困惑:

if (!($namematch && $nummatch) {
    die('Name or student number do not match those on record');
}

即使我输入的信息不正确,上述代码也不一样。

3 个答案:

答案 0 :(得分:3)

您已执行查询,但尚未提取数据。这样:

mysql_fetch_array($namematch)[0]

将为您提供数据。

请注意,mysql_ *函数已弃用且不安全。您应该使用PDO

答案 1 :(得分:1)

在您的代码中

    if (!($namematch && $nummatch) {
        die('Name or student number do not match those on record');
    }

$ namematch和$ nummatch永远是真的

$ namematch和$ nummatch只是mysql_query资源标识,资源类型始终存在

也许你应该这样做:

    $nameExists = mysql_fetch_assoc($namematch);
    $numExists = mysql_fetch_assoc($nummatch);
    if (!($nameExists && $numExists )) {
        die('Name or student number do not match those on record');
    }

答案 2 :(得分:0)

$namematch = mysql_num_rows($namematch);
$nummatch = mysql_num_rows($nummatch);
if (!($namematch && $nummatch) {
    die('Name or student number do not match those on record');
}

请立即使用PDO!