【解決方法】2 つのパラメーターを使用して印刷する


こんにちは、私を助けてくれませんか。 指定された面積以上の面積を持つ都市でアパートを取得しようとしています。

エリアと都市への入力は次の場所から行います。 http://localhost/あなたの名前/users/78/ソフィア[^]

私が試したこと:

それがクエリです

public static function getByComplexCity($parameters) {
        $db = Database::connect();

        if(count($parameters) === 4) {
           
            $sql = "SELECT * FROM flat WHERE complex=:complex AND city=:city";
            $query = $db->prepare($sql);
            $query->execute([":complex" => $parameters[0], ":city" => $parameters[1]]);

        } 

        else if (preg_match("~[-+]?[0-9]*\.?[0-9]+~", $parameters[0])) {
            $sql = "SELECT * FROM flat  WHERE price < :price";
            $query = $db->prepare($sql);
            $query->execute([":price" => $parameters[0]]);
    
        } 

        else {
            $sql = "SELECT * FROM flat WHERE area < :area AND city=:city";
            $query = $db->prepare($sql);
            $query->execute([":area" => $parameters[0], ":city" => $parameters[1]]);

        }

        $apartaments = $query->fetchAll(PDO::FETCH_ASSOC);
        return $apartaments;
}

ソフィアで78以上の面積を持つアパートを見せてくれるはずです。 しかし、それはこのようにはしません。 私はアパートをランダムに取得します。この場合、さまざまな都市から 4 つのアパートがあり、面積が 78 を超えるという要件を満たしていません。

解決策 1

コードを実行しても、それが正しいとは限りません。 :笑う:
開発プロセスは電子メールを書くことと考えてください。コンパイルが成功したということは、電子メールを適切な言語 (たとえば、ドイツ語ではなく英語) で作成したことを意味します。電子メールに送信したいメッセージが含まれていたわけではありません。

これで、開発の第 2 段階に入ります (実際には第 4 段階または第 5 段階ですが、後で前の段階に進みます): テストとデバッグです。

それが何をするのか、そしてそれがあなたが望んでいたものとどのように違うのかを見ることから始めてください。 これは、なぜそれを行っているのかについての情報を提供するため、重要です。 たとえば、プログラムがユーザーに数字を入力させることを目的としており、それを2倍にして答えを出力する場合、入力/出力が次のようになると:

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16

次に、問題がそれを2倍にするビットにあることは明らかです-それ自体を加算したり、2倍したりするのではなく、それ自体を乗算して入力の2乗を返します。
それで、コードを見ることができ、それがここのどこかにあることは明らかです:

int Double(int value)
   {
   return value * value;
   }

何がうまくいかないのかがわかったら、デバッガーを使用して原因を突き止めます。 メソッドの最初の行にブレークポイントを置き、アプリを実行します。 ブレークポイントに到達すると、デバッガーが停止し、制御がユーザーに渡されます。 コードを行ごとに実行し (「シングル ステップ」と呼ばれます)、必要に応じて変数の内容を確認 (または変更) できるようになりました (コードを変更して、必要に応じて再試行することもできます)。
コードを実行する前に、コードの各行が何をすべきかを考え、「ステップ オーバー」ボタンを使用して各行を順番に実行したときに実際に何をしたかを比較します。 それはあなたが期待したことをしましたか? その場合は、次の行に進みます。
そうでない場合、なぜですか? どう違うの?
うまくいけば、そのコードのどの部分に問題があり、何が問題なのかを突き止めるのに役立つはずです。

デバッガーの使用方法がわからない場合は、ここから始めてください。 PHP: PHP でのデバッグ – マニュアル[^]

これはスキルであり、開発だけでなく現実の世界でも役立つため、開発する価値のあるスキルです。 そして、すべてのスキルと同様に、それは使用することによってのみ向上します!

コメント

タイトルとURLをコピーしました