2011. 7. 12. 22:02

Null로 종결된 문자열 query 에 의해 가리키는 SQL 명령문을 실행한다.

mysql_query() - SQL 쿼리 실행

형태

int mysql_query(MYSQL *mysql, const char *query)

리턴값

성공 : 0(zero)

에러 : Non-Zero.

 

length 바이트 길이의 문자열인 query에 의해 가리키는 SQL 쿼리를 실행한다. 

mysql_real_query() - SQL 쿼리 실행 (바이너리 데이터를 포함한 쿼리)

형태

int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)

리턴값

성공 : 0(zero)

에러 : Non-Zero.

 

▷ 일반적으로, 문자열은 하나의 싱글 SQL 명령문으로 구성된다.

그리고 사용자는 명령문에 종료 세미콜론 (';') 또는 \g를 명령문에 추가하지 말아야 한다. 

다중 명령문 실행이 가능했다면, 문자열은 세미콜론들로 구분된 여러 개의 명령문으로 구성될 수 있다.

 

mysql_query() 함수는 바이너리 데이터를 포함하는 쿼리들의 경우 사용될 수 없다.

바이너리 데이터에는 '\0' 문자가 포함될 수 있는데, mysql_query() 함수는 쿼리 문자열의 끝으로 해석될 수 있다.

바이너리 데이터를 포함한 쿼리의 경우 mysql_query() 함수보다 mysql_real_query() 함수를 사용. 

▷ 쿼리 문자열에서 strlen() 을 호출하지 않기 때문에, mysql_real_query() 함수가 mysql_query() 함수보다 더 빠름.

 

▷ 쿼리 명령문이 결과 셋을 리턴하는지 알고 싶다면, mysql_field_count()를 사용해서 검사하도록 한다.

 

 

[ 에러 ]

CR_COMMANDS_OUT_OF_SYNC

명령문이 불규칙한 순서로 실행됨

CR_SERVER_GONE_ERROR

MySQL 서버가 중단됨.

CR_SERVER_LOST

쿼리 동안 서버로의 연결이 끊김.

CR_UNKNOWN_ERROR

알 수 없는 에러 발생.

 

Posted by devanix