ホームページ  >  記事  >  PHPフレームワーク  >  実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)

咔咔
咔咔オリジナル
2021-01-08 10:14:411462ブラウズ
#"この記事は基本的な内容です。ご覧になった場合は、自分のコードでも同じ問題が発生していないか確認してください。

"

リトル Q がまた質問をします。今日の質問は、おそらくほとんどの同志がするであろう質問です。

問題は、

ThinkPHP を使用したときにクエリによって返された結果が空かどうかを判断することです。 あまり自信がありませんか?これの何が問題ですか?ただの空っぽです!そう思ったら、ぜひ記事を読んでみてください!

#“

この問題の理由は、フレームワーク クエリ データベースによって返される結果のタイプが明確ではないことです。タイプを知ることは非常に単純な問題です。

笑い飛ばして恨みを晴らしましょう
実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)

1. 問題の再発データベースは非常に単純で、テーブル ユーザーのみです。このテーブルにはデータがなく、空のテーブルです。
実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)#データベース
次に、ThinkPHP フレームワークを使用してこのテーブルのデータをクエリします

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)クエリ コード
Little Q では、ここでどのような値が返されるかを 3 秒間考えます。まだデータを返さないか、ユーザー テーブルからデータを返します。

リトル Q は、ユーザー テーブルにはデータがまったくないため、データは返されないと躊躇せずに言いました。

それでは、印刷結果を見てみましょう。

Xiao Q は目を見開いて「まだデー​​タがありません」という 4 つの単語が表示されず、代わりに空の配列が返されました (今のところはそうだと思います)。

ここでは、これを空の配列であると一時的に考えます。実際には、配列のように見えるだけです。実際のデータ構造は結果セットです。 Baidu!

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)結果を返す
現時点では、Little Qは混乱していました!どうしてこうなりました! Xiao Q の強いリクエストにより、日付データが出力されました

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)あなたではないことを願います
戻り結果はまだ空の配列です (私はそう思う)当面)

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
結果を返す

では、配列が空かどうかの判断は empty() で行う必要があります。

リトル Q は自信を持ってうなずきました。今回は問題ないはずです。私は数年間この方法で書いてきました。判断には空を使用します。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
自信を持ってください

シャオ Q に壺が泣いているところを見せるために、カカは値が空かどうかを一度だけ判断できます。

コードは次のとおりです。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
コードの印刷

リトル Q の顔には明るい笑顔があり、私は耐えられませんでした。リクエストボタンをクリックしてください。

シャオ Q の期待に応えるしかなく、彼は残酷にもリクエスト ボタンを押しました。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
返却結果

上記の返却結果を見た後、シャオ Q の顔の笑顔は突然止まり、その後、大きな疑問に満ちた顔になりました。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)#疑問点
書かれた判定コードに問題がないか再度確認しました。

私は何十年も戦場にいて、コピー&ペーストしてキーボードを手に取り、それを実行してきました。どうしてこのコードを間違って書くことができたのでしょうか?

シャオQはついにじっとしていられなくなり、何が起こっているのか笑顔で尋ねました。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
小Qの笑顔

いよいよ本題に入りますが、引き続き小Qに真実を理解させる様子をご覧ください。

#2. 問題を解決する

返されたデータが私たちが要求したものであるかどうかを確認することが急務です。配列、次に確認してください。

そこで私はキーボードを手に取り、8 回タイプしました。それが is_array 関数でした。

リクエストを再度開始してください

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
結果を印刷してください

このとき、Xiao Q の表情は次のようになります。今回は本当にそうです。乱雑

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)#以前はこんなことはありませんでした
そこで私は冷静に公式ウェブサイトの文書を開いて、Xiao Qに見てもらいました

公式Web サイトには、データによって返される結果がデータ セットであり、それがバージョン 5.1 のデフォルトであることが明確に記載されています。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)公式 Web サイトのドキュメント
続きを読むと、追加のメソッドが何であるかがわかります。最初のメソッドは、それが空かどうかを認識することです。

小さなQはショックを受けてこう言いました。「くそー、こんな風に判断できるわけがない!」

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
追加の方法

確認してください。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
検出コード

リトルQはついに鼻水と涙を流しながら言いました、私の目に何か問題があるのではないかと思いました!

なぜ明らかに空のデータだと言えないのでしょうか?彼は長い息を吐き出した。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
結果を返す
"

リトル Q は困惑した表情で私を見てこう言いました。 5.1フレームワークでは、すべての判断がこのように書かれています。 Xiao Qは急いで飛び出してきて、ただ一言だけ言いました、オンラインに問題がなくなる前に急いでコードを修正してください、そうでなければ私は解雇されます。 実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)

#"

Xiao Q の問題を解決したら、他のことについて話しましょう。

3. 拡張機能

#Xiao Q の問題を解決した後、いくつかの深刻なトピックについて話しましょう。

上記の記事には省略された問題があります。つまり、PHP To には空です。配列が空であるか、空が使用されているかを判断します。

Xiao Q はこれが事実であると確信していますが、この使用法は引き続きフレームワークで使用できますか?

問題ないはずです!下の図を見てください。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)
コード

返された結果は期待どおりである必要があります。真実は常に真実です。

実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)#結果を返す

4. 概要

Xiao Qの要約、本質はいつもとてもシンプルです。

返された結果はデー​​タベース構成ファイルで変更できますが、変更することはお勧めしません。

フレームワークはデフォルトで結果セットを使用するように設定されているため、結果セットを使用します。配列を使用する必要がある場合でも問題ありません。

Xiao Q の質問を受けて、次の問題に注意する必要があります。

  • 検索クエリを使用する場合、結果が空で返された結果が null の場合は、
    を使用して判断できます。 判定方法
  • 選択クエリを使用する場合、結果が空の場合、返される結果は空の結果セットです。結果セットの追加関数 toArray() を使用できます。それを配列に変換し、空を使用して判断します。ただし、結果セットだけを使って判定する場合は、$data->isEmpty() が提供する関数を使って判定することができます。
学習の継続、ブログの継続、共有の継続は、Kaka がこの業界で働き始めて以来、常に堅持してきた信念です。巨大なインターネットにおけるカカの成功を願っています。この記事があなたに少しでも役立つことを願っています。私はカカです。また次回お会いしましょう。

以上が実は古いドライバは戻り結果の判定でひっくり返った(ThinkPHP)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。