我設立有其決定什麼瀏覽訪問特定部分,當一個特定的用戶獲得多個用戶角色的Web應用程序(或那些部分是偶數提供給他們)。我有一個包含「用戶名」和「角色」列的表(「用戶」)。我有一個具有列「角色」,以及每個部分的列,驅動每個角色的用戶體驗,每個都具有多個可能值的第二個表(「角色」)。我在這裏關注的是調用「useradminview」,但我對所有其他列都有同樣的問題。PHP MySQL的PDO查詢返回的列名,而不是價值
我沒有問題,獲得給定用戶的角色,當他們登錄。但是,當我試圖獲得與該角色相關的useradmin觀點,我查詢返回的列名,而不是預期值。
我發現在計算器和其他網站都是相同的症狀幾個職位,但查詢是不同的設置我得從什麼。任何幫助是極大的讚賞!
//function to get role for user - this returns the expected value
function getUserRole($username) {
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/db.php");
try {
$sql = "SELECT role FROM users WHERE username = :username";
$s = $pdoUsers->prepare($sql);
$s->bindValue(":username", $username);
$s->execute();
} catch (PDOException $e) {
$error = "Error obtaining user role";
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/dboutput.php");
exit();
}
$role = $s->fetch();
return $role[0];
}
//function to check page view for that role - this returns the column name
function getPageView($role, $page) {
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/db.php");
try {
$sql = "SELECT :page FROM roles WHERE role = :role";
$s = $pdoUsers->prepare($sql);
$s->bindValue(":role", $role);
$s->bindValue(":page", $page);
$s->execute();
} catch (PDOException $e) {
$error = "Error obtaining pageview for role";
include($_SERVER["DOCUMENT_ROOT"] . "/sharedinc/dboutput.php");
exit();
}
$pageview = $s->fetch();
return $pageview[0];
}
//end-goal query needs to be able to store the values as session variables
$_SESSION["username"] = $_POST["username"];
$_SESSION["role"] = getUserRole($_SESSION["username"]);
$_SESSION["useradminview"] = getPageView($_SESSION["role"], "useradminview");
您的問題很可能是':page'。 'getPageView'函數試圖將列名作爲參數綁定。這是不可能的。只能綁定值,而不是標識符。因此,與' - > bindValue(「:頁」,...),'你永遠也得到了按列,但無論文字字符串你曾與'$ page'預設。 – mario
啊哈!謝謝!我沒有意識到這一點 - 那就是訣竅! – nicko