我在使用基于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'];
}
并且不工作,则返回
注意:未定义的索引:名称
如果您期望有很多行,您可以循环它。
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
)
)
本可以在$fetch
上使用print_r()/var_dump()
,您将看到它的结果。
您应该将parameter设置为要绑定的参数。
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'];
}
fetchAll()
返回二维数组,因此不应返回$fetch['name'];
return $fetch[0]['name'];
或更好地使用fetch
返回单行:
$fetch = $stmt->fetch();
return $fetch;
然后使用这样的函数:
$data = GetCurrentLangName();
$language = $data['name'];