PHP API が動作を停止し、json を返さなくなったのはなぜですか?
P粉447785031
P粉447785031 2023-12-16 09:46:32
0
1
602

数年前、私はいくつかのモバイルアプリ用にバックエンド (json データを取得するための PHP) を作成しました。それ以来、このコードには触れていません。今では数週間前に機能しなくなりました。私はバックエンド開発者ではないので、ここでの経験はあまりありませんが、数年前、Firebase/Serverless を使用する代わりに独自のバックエンドを作成したほうが良いのではないかと考えました...これは私の最善のアイデアではありませんでした。 )

私が試したこと:

  • Chrome を使用して URL を確認します --> すべて正常に動作します (JSON データが表示されます)
  • アプリケーション内または Postman で確認してください: (ヘッダー: Content-Type text/html)
リーリー

これは私の php ファイルです:

リーリー

誰かが私が間違っていること/何を変更できるかを説明してもらえますか?

P粉447785031
P粉447785031

全員に返信(1)
P粉821231319

見た目 if($_SERVER['REQUEST_METHOD'] == 'GET') $response がありません。コード内にさらに多くの記述がない限り、$response は未定義です。

リーリー

このようなものでうまくいくはずです。 HTTP 405 などの HTTP 応答を確認することもお勧めします。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405

編集: あなたのアップデートを拝見しました。申し訳ありませんが、さらに疑問が生じました。言い換えると、 $db->getHighestRatingWith31Results(); は何をするのでしょうか?関数 saveResultOfQueryToArray() は 1 つのパラメーターを受け入れますが、使用方法は関数に 2 つのパラメーターを提供することです。 saveResultOfQueryToArray は mysqli_fetch_array() を呼び出していますが、これには mysqli_result インスタンスが必要です。

これは私の提案です:

  • mysqli の代わりに PDO を使用します。これは古いコードだとおっしゃっていましたが、PDO は素晴らしいです。 https://www.php.net/manual/en/class.pdo および https://phpdelusions.net/pdo
  • $response をグローバル変数として設定することはおそらくないでしょう。 saveResultOfQueryToArray() から $response を返すか、参照渡しを検討します。 https://www.php.net/manual/en/ language. References.pass.php
  • もう一度、HTTP 応答コードを調べることをお勧めします。
  • 最後に、これが難しいことは承知していますが、変数にわかりやすい名前を付け、コメントを付けてコードを文書化します。コンピューター サイエンスには古いジョークがあります。「コンピューター サイエンスで最も難しい 2 つの部分は、キャッシュの無効化、名前の付け、および 1 つずつのエラーです。」 「ドキュメントは未来の自分へのラブレターです。」 - ダミアン・コンウェイ
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート