On 18 Jun 2002 20:22:09 -0500
rm wrote:
> Hello list,
>
> I'm new to C programming, and have used MySQL for only a short time; but
> I've got a situation where I need to update an existing table using a C
> function.
>
> I'm working on Redhat 7.1 using the MySQL rpm that came with the
> package.
>
> I've written the function so that it compiles, and executes from the
> command line, and updates the MySQL table - but only with the static
> entries I write into the code. This is the INSERT statement:
>
> res = mysql_query(my_connection, "INSERT INTO pending(mbmid, pw_name,
> pw_domain) VALUES('9999', 'anyname', 'anydomain')");
>
> Using the above INSERT statement the values are correctly added to the
> table. But, what I'm trying to do is find the correct method to use
> variables in lieu of the constants.
>
> I've tried:
>
> res = mysql_query(my_connection, "INSERT INTO pending(mbmid, pw_name,
> pw_domain) VALUES('%s', '%s', '%s')",mbmID, Uname, Udomain);
You need to do it like this:
#define MAX_QUERY 1024
char my_query[MAX_QUERY];
snprintf(my_query, MAX_QUERY,
"INSERT INTO pending(mbmid, pw_name, pw_domain) VALUES ('%s', '%s',
'%s')",
mbmID, Uname, Udomain);
res = mysql_real_query(my_connection, my_query, strlen(my_query));
The %s format string is not a part of the C language proper, but rather a part
of several of the C library functions (printf, fprintf, sprintf, etc).
The reason to use snprintf versus sprintf is to avoid overwriting memory if the
query string becomes too long. If your C library doesn't provide it then you
can use sprintf, but you'll have to be more careful.
Regards,
--
Cliff Wells, Software Engineer
Logiplex Corporation (www.logiplex.net)
(503) 978-6726 x308 (800) 735-0555 x308
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php