php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #45169 Some error messages are uninformative
Submitted: 2008-06-04 11:24 UTC Modified: 2021-08-27 12:59 UTC
Votes:18
Avg. Score:4.3 ± 0.8
Reproduced:13 of 13 (100.0%)
Same Version:6 (46.2%)
Same OS:2 (15.4%)
From: ian dot lewis at mediatel dot co dot uk Assigned:
Status: Open Package: PDO related
PHP Version: 5.2.6 OS: Linux Ubuntu
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2008-06-04 11:24 UTC] ian dot lewis at mediatel dot co dot uk
Description:
------------
The error message is given below.

PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in xxx.php

It would be - extremely - helpful if the error message contained a list of the matched tokens or some information on where the token substitution failed.



Reproduce code:
---------------
$query = "SELECT *
FROM example_table et
WHERE start_date BETWEEN ':sStartDate' AND ':sEndDate'
 AND user_id = :iId"

<snip prepare statement>

$sStatement->bindParam(':iId',         $iUserId,      PDO::PARAM_INT);
$sStatement->bindParam(':sStartDate',  $sStartDate,    PDO::PARAM_STR);
$sStatement->bindParam(':sEndDate',    $sEndDate,      PDO::PARAM_STR);
$sStatement->execute();

The error PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in xxx.php

Expected result:
----------------
Expect to see either no error because it worked or a message such as

PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in xxx.php. Cannot find   token :sStartDate

Actual result:
--------------
PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in xxx.php



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-12-24 10:43 UTC] lapo at lapo dot it
You problem is probably that you used "'" for bound strings when they 
should not be used (and thus they were considered constant strings), but 
I do agree on the issue that the error could be more informative.
 [2011-04-08 21:04 UTC] jani@php.net
-Summary: PDO Some error messages are uninformative +Summary: Some error messages are uninformative -Package: Feature/Change Request +Package: PDO related
 [2021-08-27 12:59 UTC] cmb@php.net
> It would be - extremely - helpful if the error message contained
> a list of the matched tokens or some information on where the
> token substitution failed.

While that probably can be done for emulated prepares, it cannot
be done for native prepares (because these are not processed by
PHP, so we rely on what the server reports), and it seems to me
that the latter are more widely used.

Anyhow, 18 upvotes, so I'm leaving this open.
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Wed Sep 22 03:03:36 2021 UTC