tags:

views:

286

answers:

3

Can someone tell me why I am getting this error? Call to undefined method PDO::bindParam()

Here is what I have, taken right off of PHPs site for stored procedures

$stmt = db::getInstance();
$stmt->prepare("CALL delete(?)");
$stmt->bindParam(2122, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();
print "procedure returned $return_value\n";
A: 
$stmt = db::getInstance(); 
$query = $stmt->prepare("CALL delete(?)"); 
$query->bindParam(2122, $return_value, PDO::PARAM_STR, 4000); 
$query->execute();

You need to be calling PDOStatment::bindParam. The prepare method returns the PDOStatment Object. The PHP PDO/PDOStatment manuals should help.

munch
Hi Munch. What is PDOStatement
Bebo
It's the current instance of the Prepared Statement that you're working with. PDO::prepare will prepare the statement for you and return the PDOStatment, which you can them manipulate (bindParam, execute, etc). The link in my answer will show you all the methods.
munch
A: 

The bindParam() function is a method of a PDOStatement object, not a PDO object. $stmt is an object of class PDO. You'll have to use the PDOStatement from your prepare() call instead.

$pdo = db::getInstance();
$stmt = $pdo->prepare("your query");
$stmt->bindParam(2122, $return_value, PDO::PARAM_STR, 4000);
zombat
+1  A: 

The bindParam() method is inside the PDOStatement class, not the PDO class. The statement is the result of the prepare() method.

$foo = db::getInstance();
$stmt = $foo->prepare("CALL delete(?)");
$stmt->bindParam(2122, $return_value, PDO::PARAM_STR, 4000);
$stmt->execute();
print "procedure returned $return_value\n";
Dereleased