MySQL 데이터베이스 작업에 PHP를 사용할 때는 종종 MySQLI :: $ Connect_Error가 Barrled 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>
운영 체제 문자 세트를 확인하십시오 . Linux 시스템에서 로케일 명령을 사용하여 현재 시스템의 문자 세트 설정을 볼 수 있습니다.
<span><span>locale
</span></span>
mysqli :: $ connect_error는 일반적으로 일관되지 않은 문자 인코딩 설정으로 인해 차량 코드를 반환합니다. 차단 된 코드 문제를 피하기 위해 데이터베이스에 연결할 때 문자를 UTF-8로 명시 적으로 설정하여 데이터베이스, 테이블 및 필드의 문자 세트가 일관되게 유지하고 필요에 따라 MySQL 구성 파일 및 PHP 환경의 문자 세트 설정을 수정할 수 있습니다. 이러한 단계를 통해 캐릭터 인코딩으로 인한 차량 문제는 효과적으로 피할 수 있으며 PHP와 MySQL 간의 통신은 매끄럽게 될 수 있습니다.
관련 태그:
mysqli