-1

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

我对 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;
    }
}
4

1 回答 1

1

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

select case when (select 1 FROM subs WHERE subed=:subed AND user=:user) is null then 0 else 1 end;
于 2013-06-22T22:51:04.933 回答