プロジェクトで 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 に直接変更するのが最善です