Is this a single static query like:
$query = "select * from table where field=0
Or do you build it like:
$query = "select * from table ";
if (somecondition){
$query .= "where field=0";
} else {
}
???
I.e. if you're absolutly sure that the query you think ran and it did get the wrong result, then I have to say that's quite scary, like that horrible MSSQL bug where sometimes it returned only part of a select set if the set was large and you had a complex where clause, and it threw no errors.
databases giving wrong answers while throwing answers is acceptable, at least then you can abort the transaction or whatever, but throwing the wrong answers, unpredictable to boot, is just unforgiveable.
Do your logs say anything?