[英]php pdo mssql prepared statement
我在使用基於pdo的功能時遇到問題
我的GetCurrentLanguage()
函數返回一個0或1的整數
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'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.