检查某些信息是否已存在于数据库中

时间:2013-06-22 22:45:49

标签: php mysql pdo

我知道标题听起来像已发布的内容但我保证我已花时间进行研究,但没有发现任何问题。

我不是mysql的新手我知道如何从数据库中获取信息并检查它,但我想检查它的方式是我的问题。我有一个订阅系统,我一直在建立一切正常工作甚至检查 - 起初。发生的事情是我已经制作了2个测试帐户,当其中一个测试帐户订阅另一个时,我的脚本说该用户订阅了该用户,并且我的数据库结果支持它。但是当其他用户订阅回来时,检查的脚本无法正确返回。我不确定这是我的脚本检查的方式,还是我的逻辑和我的数据库设置方式的错误。

我有一个名为'subs'的表,有5列 id,user,subed,accepted,date

我检查用户是否订阅了另一个的方式是找到用户与订阅用户相同的行,并且订阅与正在订阅的用户相同。目前尚未检查“已接受”行,因为这是尚未创建的设置中的一个选项。

我确信它会变成一个明显的答案,会让我感觉和看起来真的很愚蠢,或者我忽略的东西,感谢花时间提供帮助,这里的功能似乎搞砸了

function subcheck($user, $sub){

    $user = strtolower($user);
    $sub = strtolower($sub);

    //connect to the database
    $dbh = new PDO('mysql:host=localhost;dbname=postreme', '****', '****');
    $dbh->exec("SET CHARACTER SET utf8");

    $check = $dbh->prepare("SELECT user FROM subs WHERE subed=:subed AND user=:user");
    $check->bindParam(':subed', $sub);
    $check->bindParam(':user', $user);
    $check->execute();
    $checks = $check->fetchColumn();
    $checks = strtolower($checks);

    if(!empty($checks)){
      return true;
    } else { 
      return false;
    }
}

1 个答案:

答案 0 :(得分:1)

如果记录存在则查询返回1,如果不存在则查询0:

select case when (select 1 FROM subs WHERE subed=:subed AND user=:user) is null then 0 else 1 end;