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

Php 检查数据库中是否已存在某些信息,php,mysql,pdo,Php,Mysql,Pdo,我知道这个标题听起来像是已经发布的东西,但我保证我已经花时间做了研究,没有发现任何解决我问题的方法 我不是mysql新手,我知道如何从数据库中获取信息并进行检查,但我想检查的方式是我的问题。我有一个订阅系统,我一直在建设,一切都很好,甚至检查-开始。现在发生的事情是,当一个测试帐户订阅另一个帐户时,我创建了两个测试帐户。我的脚本说该用户订阅了该用户,我的数据库结果支持它。但是当其他用户重新订阅时,检查的脚本不会正确返回。我不确定这是我的脚本检查的方式,还是我的逻辑和数据库设置的方式有问题 我有一

我知道这个标题听起来像是已经发布的东西,但我保证我已经花时间做了研究,没有发现任何解决我问题的方法

我不是mysql新手,我知道如何从数据库中获取信息并进行检查,但我想检查的方式是我的问题。我有一个订阅系统,我一直在建设,一切都很好,甚至检查-开始。现在发生的事情是,当一个测试帐户订阅另一个帐户时,我创建了两个测试帐户。我的脚本说该用户订阅了该用户,我的数据库结果支持它。但是当其他用户重新订阅时,检查的脚本不会正确返回。我不确定这是我的脚本检查的方式,还是我的逻辑和数据库设置的方式有问题

我有一个名为“subs”的表,有5列 id、用户、subed、已接受、日期


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

我相信这将是一个明显的答案,会让我觉得和看起来真的很愚蠢,或者我忽略了什么,谢谢你花时间来帮助我,这里是功能,似乎是混乱

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:

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

目前未检查“已接受”行,因为这是设置中的一个选项,尚未创建。我不明白这一点?选择用户应该选择subed,因为您要检查sub权限。应该是这样的!空$checks&&$checks==$user@AndrewGibson抱歉,仅当用户希望在实际订阅发生之前接受订阅时,才会检查已接受。它仍将创建行,但订阅将不被计算,直到被订阅的人接受该订阅或在拒绝时删除该订阅,设置中尚未创建的选项部分是因为我将有设置页面来打开和关闭该选项,但我仍处于开发的早期,还没有达到那个程度,我只提到了它,您不会因为没有检查额外的列而感到困惑