php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #37286 Documented prepare use fails
Submitted: 2006-05-02 21:42 UTC Modified: 2006-05-03 06:57 UTC
From: vldi at yahoo dot com Assigned:
Status: Not a bug Package: PDO related
PHP Version: 5CVS-2006-05-02 (snap) OS: Suse 10
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: vldi at yahoo dot com
New email:
PHP Version: OS:

 

 [2006-05-02 21:42 UTC] vldi at yahoo dot com
Description:
------------
An example used at the page http://www.php.net/manual/en/ref.pdo.php at the section "Example 9. Calling a stored procedure with an output parameter" quietly fails at prepare statement. connection established correctly because the procedure gets properly created. My configure is: './configure' '--prefix=/usr/local/php5' '--with-openssl' '--with-kerberos' '--with-zlib' '--with-bz2' '--enable-calendar' '--with-curl' '--with-curlwrappers' '--enable-exif' '--enable-ftp' '--with-gettext' '--with-ldap' '--with-ldap-sasl' '--with-mssql=/usr/local/freetds' '--with-mysql' '--with-mysql-sock' '--with-mysqli' '--with-unixODBC=/usr' '--with-pdo-mysql' '--with-pdo-odbc=unixODBC,/usr' '--enable-sockets' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--with-xsl' '--with-pear' '--disable-cgi' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-config-file-path=/etc/php.ini' '--enable-debug'

Reproduce code:
---------------
<html><body><?php
	$dbuser='user1';
	$dbpassword='';
	$dsn = "DRIVER=FreeTDS;SERVERNAME=server1;DATABASE=testdb;UID=$dbuser;";
	try {
		$dbh = new PDO('odbc:'.$dsn, $dbuser, $dbpassword );
		$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$dbh->exec("
			create procedure dbo.pdotest @param_out varchar(10) = '' output
			as set @param_out = 'the_string'
		");
		$stmt = $dbh->prepare("CALL dbo.pdotest(?)");
		print "<p>"; var_dump( $stmt ); print "</p>";
		$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
		$stmt->execute();
		print "<p>procedure returned $return_value</p>\n";
	} catch ( PDOException $e ) {
		print "<p>Failed: ".$e->getMessage()."</p></body></html>";
		die();
	}
?></body></html>

Expected result:
----------------
either returned value of failure message, but graceful script completion.

Actual result:
--------------
script aborting with html

<html><body><p>bool(false)
</p><br />
<b>Fatal error</b>:  Call to a member function bindParam() on a non-object in <b>/srv/www/htdocs/ChangeMgmt/pdotest.php</b> on line <b>14</b><br />

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-05-02 21:48 UTC] tony2001@php.net
There is absolutely no need to report the same problem twice.
 [2006-05-02 22:04 UTC] vldi at yahoo dot com
I am sure that is NOT the same problem. Im the bug 37285  	which you probably refer to the problem is with the error handling on a bad input (the wrong sql). Here the problem is about the prerape statement failing on the perceivably correct SQL, taken from the PDO documentation. Please, reconsider. I apologise if I am mistaken, anyhow.
 [2006-05-03 06:57 UTC] tony2001@php.net
No, this is the very same problem.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Oct 27 16:01:27 2024 UTC