bind parameter cannot contain dashes
| Bug #43130 | bind parameter cannot contain dashes | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Submitted: | 2007-10-29 18:07 UTC | Modified: | 2007-12-08 17:21 UTC |
|
||||||||||
| From: | joel at purerave dot com | Assigned: | iliaa (profile) | |||||||||||
| Status: | Wont fix | Package: | PDO related | |||||||||||
| PHP Version: | 5.2.4 | OS: | Windows XP Home | |||||||||||
| Private report: | No | CVE-ID: | None | |||||||||||
[2007-10-29 18:07 UTC] joel at purerave dot com
Description:
------------
Parameters to bind in a prepared statement cannot contain dashes (-) in the name. It probably assumes that "-value" should be another variable.
If this cannot be fixed, then at least update the documentation to make it clear what names can and cannot be used. Using {} around the variable name would be nice too!
Reproduce code:
---------------
$db = new PDO("mysql:host=localhost;dbname=testing", 'xxxx', 'xxxx');
$stmt = $db->prepare("SELECT id FROM testing WHERE id=:id-value");
$stmt->bindParam(':id-value', $id);
$id = 1;
$stmt->execute();
var_dump($stmt->fetch());
Expected result:
----------------
array(2) { ["id"]=> string(1) "1" [0]=> string(1) "1" }
Actual result:
--------------
Warning: PDOStatement::execute() [function.PDOStatement-execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\htdocs\test.php on line 8
bool(false)
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2007-10-29 22:37 UTC] iliaa@php.net
[2007-10-30 09:51 UTC] uw@php.net
[2018-10-25 16:28 UTC] neelaraghavendra1 at gmail dot com