簡體   English   中英

php pdo mssql准備好的語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM