我有以下程序,目的是选择包含参数的基本列:
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列作为变量?
答案 0 :(得分:1)
您正在从执行的返回值调用fetchColumn,正如您所见here,它是一个布尔值。
需要在PDOStatement类的实例上调用该方法,因此在您的情况下 $ query 变量
这意味着
$res = $query->fetchColumn();
而不是
$res = $ex->fetchColumn();