ホームページ > php教程 > php手册 > PHP は、MySQL にデータを挿入する際の不正な文字列値: 'xF0x9Fx92x8BTi...' の問題を解決します。

PHP は、MySQL にデータを挿入する際の不正な文字列値: 'xF0x9Fx92x8BTi...' の問題を解決します。

WBOY
リリース: 2016-06-21 08:47:52
オリジナル
1446 人が閲覧しました

プロジェクトで MySQL にデータを挿入するときに、データの挿入が不完全であることがわかりました。デバッグを行ったところ、挿入ステートメントに特別なエラーがないことがわかりました。しかし、どうしても入れなかったので、mysqli エラー デバッグをオンにしました

$ret = mysqli_query($this->conn, $sql) or die(mysqli_error($this->conn));
ログイン後にコピー


次のエラー メッセージがポップアップ表示されます。

間違った文字列値: 'xF0x9Fx92x8BTi...'


エラー メッセージが表示された場合は、オンラインで確認すると、結果は次のようになります。mysql エンコード形式は utf-8 形式であり、4 バイト文字列の挿入をサポートしていません。


オンラインで利用できる方法は 2 つあります:

1. MySQL をアップグレードし、対応するデータ型を utf8mb4 型に変更します

2. 表示される 4 バイトの UTF-8 文字をフィルターするか、カスタム タイプに変換します


インストールされている MySQL のバージョンは 5.1 であるため、方法 1 は適切ではありません。2 番目のフィルター文字列を選択し、それを適切な 3 バイトの utf-8 に変換しました。

$str = preg_replace('/[\x{10000}-\x{10FFFF}]/u', '', $str);
ログイン後にコピー

まだ完全なソリューションではありませんが、少なくともすべてのデータを正しく挿入できることが保証されます。

完璧なソリューションが必要な場合は、MySql をアップグレードし、データ型を utf8mb4 に直接変更するのが最善です






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