ホームページ > バックエンド開発 > PHPチュートリアル > `json_encode()` が MySQL データベース フィールドに対して NULL を返すのはなぜですか?それを修正するにはどうすればよいですか?

`json_encode()` が MySQL データベース フィールドに対して NULL を返すのはなぜですか?それを修正するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-17 04:53:26
オリジナル
1000 人が閲覧しました

Why does `json_encode()` return NULL for MySQL database fields, and how can I fix it?

JSON_ENCODE がデータベース フィールドに NULL を返す

MySQL および PHP を使用しているときに、json_encode() がフィールドに NULL を返す問題が発生する場合があります。あなたのデータベースに。具体的な例を次に示します:

$result = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2') or die(mysql_error());
$rows = array();
while($row = mysql_fetch_assoc($result)){
    $rows[] = $row;
}

echo json_encode($rows);
ログイン後にコピー

考えられる原因:

データベース スキーマとエコーされた出力を調査した結果、非形式でデータを取得している可能性があります。 -UTF8

解決策:

この問題を解決するには、SELECT クエリの前に次の行を追加します。

mysql_query('SET CHARACTER SET utf8');
ログイン後にコピー
このコマンドは、 MySQL 接続は UTF-8 エンコーディングを使用します。これは、データベース内の UTF-8 文字を適切に処理するために json_encode() で必要です。

更新されたコード:

mysql_query('SET CHARACTER SET utf8');
$result = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 2') or die(mysql_error());
$rows = array();
while($row = mysql_fetch_assoc($result)){
    $rows[] = $row;
}

echo json_encode($rows);
ログイン後にコピー

期待される出力:

ここで、更新されたコードを実行すると、次の出力が得られます。「説明」フィールドには NULL 以外の値が含まれています。値:

以上が`json_encode()` が MySQL データベース フィールドに対して NULL を返すのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート