c언어에서 mysql_fetch_array 관련 질문입니다.

shilf의 이미지

제가 리눅스 서버에서 c언어로 코딩해서
mysql에 접근하는데요

php에서는 mysql_fetch_array 로 원하는 자료형을 얻어올수 있지 않습니까
C에서는 어떻게 하는지 잘 모르겠습니다.

conn = mysql_init (NULL);
        if(conn == NULL)
        conn = mysql_init (NULL);
        if(conn == NULL)
        {       perror("mysql_init() error");
                exit(1);
        }

        if(mysql_real_connect (conn, db_host, db_user, db_passwd, db_name, 0, NULL, 0) == NULL )
        {       perror("mysql_real_connect() error:");
                exit(1);
        }

        sprintf(buf, "SELECT fid FROM file_info WHERE date < '%d'", date);
        mysql_query(conn, buf);
        res = mysql_store_result(conn);

        while(row = mysql_fetch_row(res))
        {
        remove("/root/data/'row'.dat");
        mysql_query(conn, "DELETE FROM file_info WHERE fid = 'row'");
        }

mysql_fetch_array는 어떤식으로 사용하는지 궁금합니다
단순히 쿼리를 보내서 하나를 삭제하고 입력하고 이런건 알겠는데
검색해서 배열로 받는것을 못하겠습니다.

php에서는 mysql_fetch_array로 간단히 처리할수 있었는데
c언어에서는 mysql_fetch_array를 제공하지 않습니까?

제공한다면 char*로 받아야 합니까 아니면 배열로?
예시 하나만 들어주세요

부탁드립니다.
리눅스 관련 질문이 아니라 죄송합니다만. 물어볼데가 없습니다.
꼭 좀 도와주세요~

ssehoony의 이미지

네 C 에는 없습니다.
아마 fetch_array 의 배열 index 에 숫자 대신 문자(필드명)을 사용할 수 있는 능력때문에 찾으시나요?
일단 C에서는 불가능합니다.
배열에 문자열 넣을수 있는건 PHP의 독특한 기능중에 하나이니깐요.
C++ 이라면 [] 연산자에 연산자 오버로딩을 통해서 구현이 가능합니다.
저도 PHP의 방식이 맘에 들어 c++ 로 구현한게 있는데
업무적으로 만든거라 공개할 수 가 없네요
fetch_field 와 fetch_row 를 이용하시면 됩니다.

shilf의 이미지

답변 감사합니다~ 역시 KLDP가 좋네요~
없는것 가지고 계속 찾아헤맸네요.ㅎㅎ 감사~

제가 원하는건 row[fid]이런식으로 하나씩 불러오면 좋지만
그게 불가능하다면
0,1,2,.. 이런식으로라도 배열로 받을수 없습니까

----------
fid/ date
101 / 165165
102 / 165164
103 / 165165
104 / 165132
--------------
이런식으로 되어있다면 date < 165164 인것을 다 검색해서
지우는 알고리즘을 만들고 싶습니다.
mysql_fetch_row 는 되는겁니까?

C에서 인덱스가 문자열로 안된다면
숫자로라도 몇개까지의 결과가 검색되는지 알수 있습니까?
row[0] row[1] 이런식으로 지우면 될꺼같은데요.

자꾸 이상한 에러만 나네요.
혹시 예시좀 들어주실수 있으세요?

정태영의 이미지

Quote:
DELETE FROM file_info where date < '165164';

로 하면 되는 문제를 왜 그렇게 어렵게 하려고 하시는지요?

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

익명 사용자의 이미지

답변 감사합니다.
근데 보시면 아시겠지만. (제 설명이 좀 부실했던것 같습니다.)

db 에서 지우는건 쉽습니다. 한줄로 가능하죠
문제는 실제 파일들을 삭제해야하는데요

파일 명이 "fid".dat 로 되어있습니다.
위 예시같으면 1001, 1002 등의 fid를 날리는건 쉬운데
1001.dat, 1002.dat도 같이 지워야하니까
루프를 만들어서 돌릴수밖에 없지 않겠습니까?

정말 c로 mysql접근하니까.. 새삼 php가 그리워집니다. ㅠㅠ

ssehoony의 이미지

mysql_num_rows() Returns the number of rows in a result set.

이함 수를 이용해서 select 된 결과 레코드 수를 알 수 있습니다.
그 다음 위 결과 수 만큼 루프를 돌면서

mysql_fetch_row() Fetches the next row from the result set.
를 통해 각 레코드를 읽어 옵니다.
이때 리턴된 배열을 char** result 라고 한다면
result[0] 에는 select 쿼리의 처음 지정한 필드, result[1]은 두번째
하는 식으로 담겨져 있습니다. (이건 PHP의 mysql_fetch_row 와 동일하죠?)
그 안에 있는 문자열 값이 db 의 내용이므로 이걸 참고 해서 작업하시면 되겠네요.

혹시
http://dev.mysql.com/doc/mysql/en/c-api-function-overview.html
페이지를 못 찾아서 고생하시는 건가요?

shilf의 이미지

배열을 이중포인터로 받으면 되겠군요.
설마 mysql_num_rows()와 mysql_fetch_row() 사이에
mysql에 삽입되는 경우는 없겟죠.ㅎ

답변 감사합니다.

참고로 이런 질문 여기 안어울리지만.
혹시 activex 제작 배포해보신분 계시나요.
제가 만들어서 인증서까지 해결해서 배포했는데
하나의 CAB 파일 설치시 예/아니오 를 여러번 묻습니다.ㅠㅠㅠㅠ
각 세부적인 모듈이나 폼 등을 따로 설치하는건지
아니면 사용한 윈속, common dailog, mshgrid 등의 구성요소를 따로 포함하는건지

kldp에 올릴 질문이 아닙니다만.
혹시 비주얼베이직 및 activex 대해 잘 아시는분
메일좀 주세요.ㅠㅠ

shilf1@hanmail.net 입니다.

mysql 답변 정말 감사합니다.~

익명 사용자의 이미지

서치엔진에서 미친병아리 서비를 찾아보시면 도움이 될 듯하네요.

아마도 '이 코드가 안전하다'는 내용의 코드를 추가하시면

초기에 ActiveX 설치 시 한 번만 물어보겠죠.

코드는 위 사이트에서 찾을 수 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.