Skip site navigation (1) Skip section navigation (2)

Overloaded stored procedures, PDO, and PHP issue

From: Eric Chamberlain <eric(dot)chamberlain(at)zonarsystems(dot)com>
To: <pgsql-php(at)postgresql(dot)org>
Subject: Overloaded stored procedures, PDO, and PHP issue
Date: 2009-08-19 20:26:08
Message-ID: 94F29381-7904-4A59-9ECC-E6FC8CE2A90E@zonarsystems.com (view raw or flat)
Thread:
Lists: pgsql-php
I'm having an issue calling a specific stored proc using PHP and PDO.   
I have two procs with the same name and same number of parameters.   
However, the parameter types are different.  When the below code is  
called in PHP it always calls the varchar, varchar proc.  I can not  
get it to call the integer, varchar proc.

Stored procedure definitions:
boolean is_password_expired(i_user varchar, i_pass varchar)
boolean is_password_expired(i_user_id integer, i_pass varchar)

$stmt = $db->prepare("SELECT is_password_expired(?, ?)");
$stmt->bindValue(1, $userId, $hashPass, PDO::PARAM_INT);
$stmt->execute();

This always returns false because it's passing the $userId, of say  
"1", to the varchar, varchar proc.  I've tried using the following:

$stmt = $db->prepare("SELECT  
is_password_expired(?::integer, ?::varchar)");

This completely fails.

$stmt->bindParam(1, $userId, $hashPass, PDO::PARAM_INT);

Same as bindValue result.

$stmt->execute(array($userId, $hashPass));

Same result.

Is there some way to inform PDO and Postgresql that I plan on using  
the integer, varchar proc?  If so, how do I do this?  Thanks all!

Eric

pgsql-php by date

Next:From: Hajek, NickDate: 2009-08-19 20:42:20
Subject: Re: Stored procedures, PDO, and PHP issue
Previous:From: Eric ChamberlainDate: 2009-08-19 20:20:04
Subject: Stored procedures, PDO, and PHP issue

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group