2011-09-19 3 views
0

나의 목적은 사용자가 테이블에없는 값을 삽입 할 때마다 사용자에게 경고하는 것입니다.값이 테이블에 없는지 확인 .help..please (MySQL4 + C)

테이블 : 영리() 함수 있으며, mysql_affected_rows를 사용하도록 제안

For_Sconti | Cat_Sconti | Sconto 

    7148    A1   451.00 

사람.

업데이트 성명서가 발행 될 때 사용할 수 있기 때문에 나는 어떻게 작동되는지는 알 수 없지만 아무런 소용이 없습니다. 여기

코드는 내가 사용하는 것 :

memset(query, 0, 200); 
      strcat(query, "UPDATE Sconti SET "); 
      strcat(query, "Sconto = '"); 
      strcat(query, nuovo_sconto); 
      strcat(query, "' WHERE For_Sconti ='"); 
      strcat(query, For_Sconti); 
      strcat(query, "' AND Cat_Sconti='"); 
      strcat(query, Cat_Sconti); 
      strcat(query, "';"); 
      if ((mysql_affected_rows()) == 0) 
      printf("Warning you tried to modify non existent record\n"); 

이 오류 메시지가 내가 얻을 수있다 :

2.0.c: In function ‘modifica_sconto’: 
2.0.c:330: error: too few arguments to function ‘mysql_affected_rows’ 

누군가가 문제의 나가 도와 드릴까요?

도움이 될 것입니다.

+0

베라, 실제로 성명서를 실행하고있는 것 같지 않습니까? 내가 보는 모든 것은 문자열 연결의 무리입니다. – Icarus

+0

사실 그건 업데이트 진술입니다 ... 물론 몇 줄 위는 모든 단일 레코드의 값을 얻습니다. 내가 잘못 했습니까? – Vera

+0

문제를 해결했습니다 ... 결과를 사용하면 결과 = mysql_store_result (conn); num_rows = mysql_num_rows (result); num_rows가 0보다 크면 사용자 입력이 테이블에 있고 그렇지 않으면 경고는 다른 작업을 방지합니다. – Vera

답변

1
  1. 업데이트 구문을 생성했지만 실행하지 않습니다. 당신은 상 mysql_query() 당신이 있으며, mysql_affected_rows에 매개 변수()

    char *stmt = "UPDATE products SET cost=cost*1.25 WHERE group=10"; mysql_query(&mysql,stmt); printf("%ld products updated", (long) mysql_affected_rows(&mysql));

참고로 mysql을 연결 핸들 구조 (MYSQL *)를 통과해야

  • 를 사용하여 업데이트 문을 실행해야합니다

    1. http://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html
    ,
  • 관련 문제