我在使用基于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'];
}
并且无效,它返回
注意:未定义索引:名称
答案 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'];