success return from mysql_query() when error return was expected

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