php pdo mssql编写的声明

时间:2014-10-05 02:44:54

标签: php sql-server pdo

我在使用基于pdo的功能时遇到了麻烦

我的GetCurrentLanguage()函数返回0或1的int

public function GetCurrentLangName()
{
    $stmt = $GLOBALS['website']->prepare("SELECT * FROM available_languages WHERE id = :id");
    $stmt->bindParam(':id', $this->GetCurrentLanguage(), PDO::PARAM_INT);

    $stmt->execute();
    $fetch = $stmt->fetchAll();
    return $fetch['name'];
}

并且无效,它返回

  

注意:未定义索引:名称

3 个答案:

答案 0 :(得分:2)

如果你期待很多行,你可以直接循环它。

public function GetCurrentLangName()
{
    $data = array():
    $stmt = $GLOBALS['website']->prepare("SELECT * FROM available_languages WHERE id = :id");
    $stmt->bindParam(':id', $this->GetCurrentLanguage(), PDO::PARAM_INT);

    $stmt->execute();
    $fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach($fetch as $row) {
        $data[] = $row['name'];
    }
    return $data;
}

此函数(->fetchAll())返回一个多维数组。可能看起来像这样:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => lang
        )

    [1] => Array
        (
            [id] => 2
            [name] => lang
        )
)

可以在print_r()/var_dump()上使用$fetch并且您会看到它产生了什么。

答案 1 :(得分:0)

你应该将参数设置为你想要绑定的参数。

public function    GetCurrentLangName($id)
{
    $stmt =     $GLOBALS['website']-    >prepare("SELECT * FROM     available_languages WHERE id = :id");
    $stmt->bindParam(':id', $id,     PDO::PARAM_INT);

$stmt->execute();
$fetch = $stmt->fetchAll();
return $fetch['name'];

}

答案 2 :(得分:0)

fetchAll()返回二维数组,因此不应该返回$fetch['name']; return $fetch[0]['name'];或更好地使用fetch返回一行:

$fetch = $stmt->fetch();
return $fetch;

然后使用这样的函数:

$data  = GetCurrentLangName();
$language = $data['name'];