success return from mysql_query() when error return was expected
am 08.04.2009 22:52:33 von Pete Wilson
Hi everyone --
I'm a MySQL noob. I have MySQL queries in my C code and I was surprised to find I'm getting a success return from:
mysql_query(pmysql, "select * from usrs where(usr=\"illegal name\"");
In this table called "usrs," "usr" is the primary key and the engine is myisam. I expected an error return from this query on "illegal name," which is not in the table.
An error is not returned until I call:
prow = mysql_fetch_row(pmysqlres));
which returns NULL, which is great.
If I run that same select from the command line, I see:
mysql> select * from usrs where (usr="illegal name");
Empty set (0.00 sec)
My question, finally: Is this response to my program call expected and normal for MySQL? I suppose it is, but I just want to make sure that the behavior is OK, that indeed the program call to mysql_query(select ...) must always in these circumstances return success.
Thanks!
-- Pete Wilson
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=gcdmg-mysql-2@m.gmane.org
Re: success return from mysql_query() when error return wasexpected
am 09.04.2009 10:03:46 von Thomas Spahni
On Wed, 8 Apr 2009, Pete Wilson wrote:
> Hi everyone --
>
> I'm a MySQL noob. I have MySQL queries in my C code and I was surprised
> to find I'm getting a success return from:
>
> mysql_query(pmysql, "select * from usrs where(usr=\"illegal name\"");
>
> In this table called "usrs," "usr" is the primary key and the engine is
> myisam. I expected an error return from this query on "illegal name,"
> which is not in the table.
>
> An error is not returned until I call:
>
> prow = mysql_fetch_row(pmysqlres));
>
> which returns NULL, which is great.
>
> If I run that same select from the command line, I see:
>
> mysql> select * from usrs where (usr="illegal name");
> Empty set (0.00 sec)
>
> My question, finally: Is this response to my program call expected and
> normal for MySQL? I suppose it is, but I just want to make sure that the
> behavior is OK, that indeed the program call to mysql_query(select ...)
> must always in these circumstances return success.
>
> Thanks!
>
> -- Pete Wilson
Hi Pete
I suspect that "illegal name" means that this value is not existing in the
table. Right?
But this query is perfectly correct and should not throw an error. It's
like
select * from table where 1 = 0;
which returns nothing, the correct answer.
Tom
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql?unsub=gcdmg-mysql-2@m.gmane.org