如何使用PDO使用select命令调用过程?

时间:2015-07-08 12:47:22

标签: php mysql pdo

我有以下程序,目的是选择包含参数的基本列:

CREATE PROCEDURE GetMap(p_team VARCHAR(100) CHARSET 'utf8')
BEGIN
SELECT Base FROM map WHERE 
map.Base = p_team OR
Ver1 = p_team OR
Ver2 = p_team OR
Ver3 = p_team OR
Ver4 = p_team OR
Ver5 = p_team OR
Ver6 = p_team OR
Ver7 = p_team OR
Ver8 = p_team OR
Ver9 = p_team OR
Ver10 = p_team OR
Ver11 = p_team OR
Ver12 = p_team;
end //

当我尝试从PHP调用过程时:

function getMap($data){
    $query = $this->PDO->prepare("CALL GetMap(:data)");
    $query->bindParam(':data', $data);

    $ex = $query->execute();
    $res = $ex->fetchColumn();
    echo $res;
    if($res){
        return $res;
    }
    else
    {
        return $data;
    }
}

它返回一个异常:

  

在非对象

上调用成员函数fetchColumn()

如何从选择过程中将Base列作为变量?

1 个答案:

答案 0 :(得分:1)

您正在从执行的返回值调用fetchColumn,正如您所见here,它是一个布尔值。

需要在PDOStatement类的实例上调用该方法,因此在您的情况下 $ query 变量

这意味着

$res = $query->fetchColumn();

而不是

$res = $ex->fetchColumn();