|
现在,我们更改代码,所以 'insert' 部分被替换成:
mysql_errno(&my_connection),
mysql_error(&my_connection));
} }
res = mysql_query(&my_connection,
"UPDATE children SET AGE = 4
WHERE fname = 'Ann'");
if (!res) { printf("Updated %lu rows\n",
(unsigned long)mysql_affected_rows(&my_connection));
} else { fprintf(stderr, "Update error %d:
%s\n",mysql_errno(&my_connection),
mysql_error(&my_connection));
}
现在假设子表中有的数据,如下:
childno
fname
age
1
2
3
4
5
6
7
8
9
10
11
Jenny
Andrew
Gavin
Duncan
Emma
Alex
Adrian
Ann
Ann
Ann
Ann
14
10
4
2
0
11
5
3
4
3
4
如果我们执行update1,希望报告的受影响行数为4,但是实际上程序报告2,因为它仅必须更改2行,虽然WHERE子句标识了4行。如果想让 mysql_affected_rows报告的结果为4这可能是熟悉其它数据库的人所期望的),则需要记住将CLIENT_FOUND_ROWS标志传递到mysql_real_connect,在 update2.c中的程序如下:
if (mysql_real_connect(&my_connection, "localhost",
"rick", "bar", "rick", 0, NULL, CLIENT_FOUND_ROWS)) {
|