PHPでデータベースに挿入される文字化けの問題を解決する方法

PHPz
リリース: 2023-03-28 15:43:22
オリジナル
783 人が閲覧しました

PHP を使用してデータベースにデータを挿入すると、文字化けが発生することがあります。これは、データ送信中に文字セットが不一致になるためです。この記事では、PHPでデータベースに挿入される文字化けの問題を解決する方法を紹介します。

1. データベース キャラクタ セットを確認する

問題の解決を開始する前に、まずデータベース キャラクタ セットを確認する必要があります。次のコマンドを使用して、現在のデータベースのキャラクタ セットを表示できます:

SHOW VARIABLES LIKE 'character_set_database';
ログイン後にコピー

データベース キャラクタ セットが UTF-8 でない場合は、データを確実に表示できるように、UTF-8 に変更する必要があります。正しく挿入され、読み取られるようにしてください。次のコマンドを使用して、データベース文字セットを UTF-8 に変更できます:

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
ログイン後にコピー

2. PHP ファイルのエンコード形式を設定します

これにより、PHP の文字列をデータベースに正しく挿入できるようになります。次のコードを使用して、PHP エンコード形式を設定できます:

header('Content-Type: text/html; charset=UTF-8');
ログイン後にコピー

3. mysqli エンコード形式を設定します

mysqli 拡張機能を使用して PHP にデータを挿入する場合、 mysqli エンコード形式を設定する必要があります。次のコードを使用して、mysqli エンコード形式を設定できます:

$mysqli = new mysqli("localhost", "username", "password", "database_name");
$mysqli -> set_charset("utf8");
ログイン後にコピー

4. htmlspecialchars 関数を使用します

データを挿入する前に、PHP 組み込み関数 htmlspecialchars を使用します。挿入する必要がある文字列を変換します。これにより、特殊文字がデータベースに影響を与えるのを防ぎます。次のコードを使用して文字列をエスケープできます:

$str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
ログイン後にコピー

5. プリペアド ステートメントを使用する

プリペアド ステートメントを使用すると、SQL インジェクションを効果的に防止し、文字化けを回避できます。次のコードを使用して、プリペアド ステートメントを使用してデータを挿入できます。

$stmt = $mysqli -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> bind_param("ss", $val1, $val2);
$val1 = htmlspecialchars($val1, ENT_QUOTES, 'UTF-8');
$val2 = htmlspecialchars($val2, ENT_QUOTES, 'UTF-8');
$stmt -> execute();
ログイン後にコピー

6. PDO の使用

PDO を使用すると、データベース操作をより便利に処理でき、コード化けの問題を効果的に回避できます。 . .次のコードを使用して、PDO を使用してデータを挿入できます。

$conn = new PDO("mysql:host=localhost;dbname=database_name;charset=utf8", "username", "password");
$stmt = $conn -> prepare("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
$stmt -> execute([$val1, $val2]);
ログイン後にコピー

7. 概要

PHP を使用してデータベースに挿入すると、文字化けが発生することが非常によくあります。コードの問題。しかし、上記の手順を実行するだけで文字化けの問題は簡単に解決できます。なお、データベース操作を実行する前に、データベースの文字セットが正しいかどうかを確認する必要があり、これは文字化けを防ぐための重要な手順です。

以上がPHPでデータベースに挿入される文字化けの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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