DB Error: mismatch (in a PHP script)

If you get something like the “DB Error: mismatch” message in a PHP script, this is probably caused by a bug in the script. If I get it right, the message means: there is a mismatch between the number of placeholders (e.g. “?” signs) in your database query and the number of parameters given to the query() method.

For instance, if your query is “SELECT * FROM people WHERE honesty>3”, but you mistakenly call it like this:

$dbh-> query( "SELECT * FROM people WHERE honesty>3", $threshold );

Where you probably meant:

$dbh-> query( "SELECT * FROM people WHERE honesty>?", $threshold );

I think this is reported by the DB_Common class (since a certain version).

On the topic:

6 Comments Add yours

  1. PhpCatalog says:

    got the same problem…

  2. Matt says:

    Thanks! Saved me some time.

  3. sebastian says:

    Thx for pointing this out!
    Saved me some time, either :)

  4. RustyDog says:

    I know, old thread. But for those banging their head against the wall, I always cause this by having a != in the query
    SELECT *
    FROM food
    WHERE calories != ”
    AND menu_date = ?

    The != is trying to get substituted out. Replace with and you should be good.

    1. Ivan says:

      thanks for sharing your case.

Leave a comment