Re: inserting into mysql database in linux using C

2001-03-26 Thread Lindsay Adams

l.
 
 -Original Message-
 From: john lin [mailto:[EMAIL PROTECTED]]
 Sent: Sunday, March 25, 2001 2:56 PM
 To: [EMAIL PROTECTED]
 Subject: inserting into mysql database in linux using C
 
 
 I am a senior in Polytechnic University working on my
 senior project.  I have chosen MySQL to be database in
 Red Hat linux 7.0.  I writing a program to insert a
 value into the database in c language.  The data
 changes so i have to insert the data as a variable,
 but the database reports a error saying that the data
 is a column, the code is something like this..
 
 int main(int argc, char **argv)
 {
 ..
 char* test;
 test="abcd";
 int res;
 MySQL *connection;
 
 res=mysql_query(connection, "INSERT INTO tablename
 (userid) VALUES(test));
 
 }
 
 I get an error saying "Insert error 1054, unknown
 column 'test' in 'field-list'
 

I don't program in c myself, but if you were doing this from the mysql
utility, the value of your variable test, would have to be in single quotes.
(ie. INSERT INTO tablename (userid) VALUES ('data to insert') )

I am guessing that your program is trying to put the raw word test into the
database, not the value of your variable.

Also looks like you forgot to close the double quote.

Do whatever you have to do to get your variable to interpolate inside the
query string. 

Maybe build the query in a local variable and insert the variable into the
second parameter of mysql_query?

Querystring = "INSERT INTO tablename (userid) VALUES ('".test."')";

(I don't know what the c concatenation operator is,php uses the '.', but you
should build your query like this to put the value of test into the query
string. I also don't know the behavior of double quotes in strings, and
variables within them within c)


If you copied and pasted that query as is into the mysql client, you would
get the same error.


-
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




Re: inserting into mysql database in linux using C

2001-03-25 Thread MikemickaloBlezien

On Sun, 25 Mar 2001 12:56:15 -0800 (PST), john lin [EMAIL PROTECTED]   wrote:

John,

I'm not a 'C' programmer, but I think you need to enclose your VALUE with single
quotes for a literal value: VALUES('test')

Atleast in Perl, it' done that way.

 
I am a senior in Polytechnic University working on my
senior project.  I have chosen MySQL to be database in
Red Hat linux 7.0.  I writing a program to insert a
value into the database in c language.  The data
changes so i have to insert the data as a variable,
but the database reports a error saying that the data
is a column, the code is something like this..

int main(int argc, char **argv)
{
..
char* test;
test="abcd";
int res;
MySQL *connection;

res=mysql_query(connection, "INSERT INTO tablename
(userid) VALUES(test));

}

I get an error saying "Insert error 1054, unknown
column 'test' in 'field-list'

Mike(mickalo)Blezien

Thunder Rain Internet Publishing
Providing Internet Solutions that work!
http://www.thunder-rain.com
Tel: 1(225) 686-2002
=















-
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




Re: inserting into mysql database in linux using C

2001-03-25 Thread Fred van Engen

On Sun, Mar 25, 2001 at 12:56:15PM -0800, john lin wrote:
 I am a senior in Polytechnic University working on my
 senior project.  I have chosen MySQL to be database in
 Red Hat linux 7.0.  I writing a program to insert a
 value into the database in c language.  The data
 changes so i have to insert the data as a variable,
 but the database reports a error saying that the data
 is a column, the code is something like this..
 
 int main(int argc, char **argv)
 {
 ..
 char* test;
 test="abcd";
 int res;
 MySQL *connection;
 
 res=mysql_query(connection, "INSERT INTO tablename
 (userid) VALUES(test));
 
 }
 
 I get an error saying "Insert error 1054, unknown
 column 'test' in 'field-list'
 

I never used the C API for MySQL, but since I do know C and
MySQL a bit, I'll have a shot at this.

It says that test is NOT a column, but you use it as if it were
a column.

If you meant to use the variable test (i.e. "abcd") then MySQL
doesn't know about it because it is a C variable. You would
need to expand it into the query with snprintf for example:

char q[500];

snprintf(q, sizeof(q), "INSERT INTO tablename(userid) VALUES('%s')", test);

res = mysql_query(connection, q);

Note the quotes around the %s. Also note that this is a
simplified example. If test contains special characters,
like non-printable characters or quotes, you'll need to
escape them. Maybe the C API has a function to do that for
you, but you'll need to look it up.


Regards,

Fred.

-- 
Fred van Engen  XO Communications B.V.
email: [EMAIL PROTECTED] Televisieweg 2
tel: +31 36 5462400 1322 AC  Almere
fax: +31 36 5462424 The Netherlands

-
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