這裏是我當前的代碼轉換的mysqli以PDO bind_all
function getUserDetails($username=NULL, $id=NULL) {
if($username!=NULL) {
$column = "user_name";
$data = $username;
}
elseif($id!=NULL) {
$column = "id";
$data = $id;
}
global $db;
$query = $db->prepare("SELECT id, username, permissions, forename, surname, password, email, courseid, choiceid, lastlogin, active FROM users WHERE $column = :column");
$query->bindParam(":column", $data);
$query->execute();
$query->bind_result ($id, $username, $permissions, $forename, $surname, $password, $email, $courseid, $choiceid, $lastlogin, $active);
while ($query->fetch()){
$row = array('id' => $id, 'userlevel' => $permissions, 'username' => $username, 'forename' => $forename, 'surname' => $surname, 'password' => $password, 'email' => $email, 'courseId' => $courseid, 'choiceId' => $choiceId, 'lastlogin' => $lastlogin, 'active'=> $active);
}
return ($row);
}
我一直在試圖將它轉換爲PDO,因爲我已經發現了bind_result不與PDO工作 - 任何人都可以幫我一下,我應該做什麼?
我讀過我應該使用抓取的arround?但我很困惑。
[編輯]
IVE嘗試這樣做:
function getUserDetails($username=NULL,$id=NULL) {
if($username!=NULL) {
$column = "user_name";
$data = $username;
}
elseif($id!=NULL) {
$column = "id";
$data = $id;
}
global $db;
$query = $db->prepare("SELECT id, username, permissions, forename, surname, password, email, courseid, choiceid, lastlogin, active FROM users WHERE $column = :column");
$query->bindParam(":column", $data);
$query->execute();
$results = array();
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
$results[] = $row;
}
return ($results);
}
這是正確方向的步驟?
[EDIT2]
更新我的代碼如下:
function getUserDetails($username) {
global $db;
$query = $db->prepare("SELECT * FROM users WHERE username = :username");
$query->bindParam(":username", $username);
return $query->fetch(PDO::FETCH_ASSOC);
}
$username = 'uname';
$result = getUserDetails($username);
print_r($result);
但不打印輸出。用戶名肯定存在。
香港專業教育學院試圖用一些虛擬數據
$data = '2';
$sth = $db->prepare("SELECT * FROM test WHERE id = :id");
$sth->bindParam(":id", $data);
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
IM試圖找出如何訪問哪些是印刷陣列的測試數據庫: 陣列出來的
Array ([Id] => 2 [Name] => tom)
我如何(例如)做
$name = $result['name']; //line 67
當我嘗試代碼我得到
Notice: Undefined index: name in <directory>\test.php on line 67
想通了!
function getUserDetails($username) {
global $db;
$sth = $db->prepare("SELECT id, username, permissions, forename, surname, password, email, courseid, choiceid, lastlogin, active FROM users WHERE username = :username");
$sth->bindParam(":username", $username);
$sth->execute();
$result = $sth->fetch(PDO::FETCH_ASSOC);
return $result;
}
$username = 'un';
$userdetails = getUserDetails($username);
echo $userdetails['forename'];
它給了我正確的答案! 感謝您的幫助
1. **您需要使用連接選項來形成我鏈接到**的標記wiki以獲取錯誤。你需要讓你介意字段名稱。如果它是'user_name','username','Name'或'name' – 2013-03-04 15:03:34