php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #35565 named :placeholders are not queried w/ MySQL
Submitted: 2005-12-06 06:17 UTC Modified: 2005-12-15 01:00 UTC
Votes:6
Avg. Score:4.7 ± 0.7
Reproduced:6 of 6 (100.0%)
Same Version:2 (33.3%)
Same OS:2 (33.3%)
From: capiCrimm at gmail dot com Assigned:
Status: No Feedback Package: PDO related
PHP Version: 5CVS-2005-12-06 (snap) OS: GNU Debian Sarge
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2005-12-06 06:17 UTC] capiCrimm at gmail dot com
Description:
------------
Using named and positional :placeholders in a PDO prepare   
statement result in an empty table in MySQL. Entering in   
the values into the prepare statement by hand does work,   
however, and when copying over the examples from the man   
to check myself I could get a nonsensical   
result(196864:327683) when using 5 for the values. I added 
a print in the code, but the values are also blank using 
mysql CLI and the result is the same using php CLI 

Reproduce code:
---------------
<?php

$conn = new PDO('mysql:dbname=testing;host=localhost;','root','');

## CREATE TABLE tbTest(one char(4), two char(4));
$stmt = $conn->prepare("INSERT INTO tbTest(one,two)  VALUES (:name , :value)");
 $stmt->bindParam(':name', $name, PDO::PARAM_STR, 4);
 $stmt->bindParam(':value', $value, PDO::PARAM_STR, 4);
 
 $name = 'val1';
 $value = 'val2';
 $stmt->execute();

foreach( $conn->query("SELECT * FROM tbTest", PDO::FETCH_ASSOC) as $table ){
  print " {$table['one']}:{$table['two']} ";
} 
?>

Expected result:
----------------
val1:val2 

Actual result:
--------------
: 

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-12-06 18:36 UTC] iliaa@php.net
What version of MySQL are you using?
 [2005-12-06 19:15 UTC] capiCrimm at gmail dot com
I'm running a .deb, ``mysql Ver 14.7 Distrib 4.1.12''.
 [2005-12-06 22:48 UTC] iliaa@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.1-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.1-win32-latest.zip

Seems to work in latest CVS using MySQL 4.1.14
 [2005-12-07 04:22 UTC] capiCrimm at gmail dot com
The CVS update did nothing. I tried downgrading to mysql 
3.x and it didn't work. But upgrading to mysql5 did do the 
job. Seems weird, but maybe it's only >4.1.14? I'll try 
and compile PHP-CVS on another computer and see if the 
error is still occuring.
 [2005-12-15 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2006-03-10 08:47 UTC] leigh at eon dot com dot au
I have encountered this problem using PHP 5.1.2 with MySQL 4.1.12. However, MySQL 5.0.18 returns the expected results.

I was unable to install the latest CVS copy of PHP 5.1, but might try again later when I have more time.

<?php
$id = '1';

$conn = new PDO('mysql:dbname=test;host=localhost;','root','worksql');

# CREATE TABLE `testtable` ( `test_id` INT NOT NULL ,`test_data` VARCHAR( 128 ) NOT NULL );
# INSERT INTO `testtable` ( `test_id` , `test_data` ) VALUES ( '1', 'test data 1' ), ( '2', 'test data 2' );

$query = $conn->prepare("SELECT * FROM testtable WHERE test_id=?");
$query->execute(array($id));

$results = $query->fetchAll(PDO::FETCH_ASSOC);

var_dump($results);
?>

MySQL 4.1.12 returns:
array(0) {
}

MySQL 5.0.18 returns:
array(1) {
  [0]=>
  array(2) {
    ["test_id"]=>
    string(1) "1"
    ["test_data"]=>
    string(11) "test data 1"
  }
}
 [2006-04-06 15:36 UTC] georg at howen dot de
I experienced the bug on PHP 5.1.2 on Linux (Linux infong 2.4 #3 SMP Mon Feb 6 14:37:49 CET 2006 i686 unknown) on my providers webserver with MySQL 5.0. Using the '?' placeholder instead named placeholders seems to be a viable workaround.

Although everything works as expected on my local machine running Windows XP, PHP 5.1.1 and MySQL 5.0.
 [2006-10-20 09:29 UTC] jan_mentzel at gmx dot de
same problem here. This is quite a critical issue for me - 
can't use my dev-box while pdo is broken.

gentoo (~x86)
gcc 4.1.1
mysql-4.1.21  
apache-2.0.59  
php-5.1.6 (r6)

Another strange thing is: On that box phpinfo() Configure 
Command looks quite strange:

$ echo '<?php phpinfo() ?>' | php | grep configure
Configure Command =>  './configure' 'dummy' 'grep' 'ggrep'
$


But on an other box PDO placeholders are working as 
expected:

gentoo (~x86)
gcc 3.4.3
mysql-4.1.21
apache-2.0.59 (r1)
php-5.1.6 (r6)

The phpinfo() "Configure Command" looks as expected as 
well:

$ echo '<?php phpinfo() ?>' | php | grep configure
Configure Command 
=>  './configure' '--prefix=/usr/lib/php5' '--host=i586-pc-linux-gnu' '--mandir=/usr/lib/php5/man' 
[...]
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 16 08:01:32 2024 UTC