MySQLデータベース操作にPHPを使用する場合、 MySQLI :: $ Connect_ErrorがCarled Codeを返す状況に遭遇することがよくあります。この問題は、一般に、設定をエンコードする誤った文字をエンコードすることによって引き起こされます。これにより、データベースから読み取られるエラーメッセージの文字化けコードが発生し、正常に表示できません。
MySQLI :: $ CONNECT_ERRORは、 MySQLI拡張機能で使用される属性であり、データベース接続エラー情報を取得します。データベース接続に問題がある場合、通常、それを使用してエラーメッセージをキャプチャして処理します。ただし、データベースに接続したときに文字を正しく設定しない場合、エラーメッセージが文字化けされる可能性があります。
これにはいくつかの理由があるかもしれません:
データベース接続が接続されているときに、文字セットは指定されていません。
データベースのデフォルト文字セットは、PHPのデフォルト文字セットと一致しません。
データベースのテーブルとフィールドの文字セット設定は均一ではありません。
サーバーオペレーティングシステムまたはPHP環境の文字設定設定は一貫していません。
文字化けの問題を回避するには、PHPとMySQLが統一されたキャラクターセットと通信するようにする必要があります。一般的に、文字セットを設定するにはいくつかの方法があります。
データベース接続を確立するとき、 MySqli :: set_charset()メソッドを介して文字セットを設定できます。このメソッドは、現在の接続の文字エンコードを設定して、後続のSQLクエリ操作が同じ文字セットを使用するようにします。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$servername</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">"test_db"</span></span><span>;
</span><span><span class="hljs-comment">// 接続を作成します</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-variable">$servername</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);
</span><span><span class="hljs-comment">// 接続が成功しているかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"接続に失敗しました: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// キャラクターを設定します UTF-8</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8"</span></span><span>);
</span><span><span class="hljs-comment">// 他のデータベース操作を続行します</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
この例では、 $ conn-> set_charset( "utf8");文字をUTF-8に設定します。このようにして、UTF-8エンコードは、クエリの結果や接続エラー情報に関係なく使用され、コードの問題を避けます。
データベースまたはテーブルのデフォルトの文字セットがUTF-8に設定されていない場合、文字化けのコードの問題を引き起こす可能性もあります。文字セットを統合するには、データベース、テーブル、およびフィールドの文字セットを、次のSQLステートメントを介してUTF-8に設定できます。
データベースの文字セットを変更します。
<span><span><span class="hljs-keyword">ALTER</span></span><span> DATABASE test_db </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span>
テーブルの文字セットを変更します。
<span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table_name </span><span><span class="hljs-keyword">CONVERT</span></span><span> </span><span><span class="hljs-keyword">TO</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span>
テーブル内のフィールドの文字セットを変更します。
<span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table_name CHANGE column_name column_name </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">255</span></span><span>) </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span>
各接続の文字セットを手動で設定する必要があることがわかった場合は、MySQLの構成ファイル( my.cnfまたはmy.ini )にグローバル文字セットを設定することを検討してください。 [mysqld]領域に次の構成を追加します。
<span><span><span class="hljs-section">[mysqld]</span></span><span>
</span><span><span class="hljs-attr">character-set-server</span></span><span>=utf8
</span></span>
次に、変更が有効になるためにMySQLサービスを再起動します。
データベースと接続設定に加えて、PHP構成とオペレーティングシステムの文字セットは、データベース操作の文字セットにも影響を与える可能性があります。 PHP環境とオペレーティングシステムの文字セットがUTF-8に設定されていることを確認してください。これは以下で確認できます。
PHPデフォルトの文字セットを確認します。PHPINFO ()関数を使用して、現在のPHP環境の文字設定設定を表示できます。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">phpinfo</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
オペレーティングシステムの文字セットを確認します。LinuxSystemsでは、 Localeコマンドを使用して、現在のシステムの文字設定を表示できます。
<span><span>locale
</span></span>
mysqli :: $ connect_error通常は、一貫性のない文字エンコード設定が原因で、文字化けコードを返します。文字化けのコードの問題を回避するために、データベース、テーブル、フィールドの文字セットが一貫していることを確認するために、データベースに接続するときに文字セットをUTF-8に明示的に設定し、必要に応じてMySQL構成ファイルとPHP環境の文字設定設定を変更できます。これらの手順を通じて、文字エンコードによって引き起こされる文字化けの問題は効果的に回避でき、PHPとMySQLの間の通信はスムーズになります。
関連タグ:
mysqli