-1

タイトルがすでに投稿されているもののように聞こえることは承知していますが、時間をかけて調査を行った結果、問題の原因となるものは何も見つからなかったことを約束します。

私はmysqlを初めて使用するわけではありません。データベースから情報を取得して確認する方法は知っていますが、確認する方法は私の問題です。私が構築してきたサブスクリプション システムは、最初はチェックも含めてすべて正常に機能しています。何が起こっているかというと、テスト アカウントの 1 つが他のアカウントをサブスクライブしているときに 2 つのテスト アカウントを作成したことです。私のスクリプトは、そのユーザーがそのユーザーをサブスクライブしていることを示しており、データベースの結果はそれをサポートしています。しかし、他のユーザーがサブスクライブすると、チェックするスクリプトは正しく返されません。それが私のスクリプトがチェックしている方法なのか、それとも私のロジックと私のデータベースのセットアップ方法に問題があるのか​​ どうかはわかりません.

id、user、subed、accepted、date の 5 つの列を持つ「subs」というテーブルがあります。

ユーザーが他のユーザーにサブスクライブしているかどうかを確認する方法は、ユーザーがサブスクライブしているユーザーと同じであり、サブスクリプションがサブスクライブしているユーザーと同じである行を見つけることです。現時点では、「承認済み」行はチェックされていません。これは、まだ作成されていない設定のオプションであるためです。

私はそれが私を本当に愚かに感じさせたり、見落としたりする明白な答えになると確信しています。時間を割いてくれてありがとう。

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