我知道至少在哪裏不放。不知道在哪裏放ORDER BY
我從我的前任繼承了這個項目。我對PHP和SQL Server知之甚少,但我們在這裏。第一個while循環包含該問題。我需要ORDER BY UserType,但顯然它只是每次訂購一個條目,因爲它在while循環中的位置。結果意味着結果以字母順序首先顯示一個用戶類型,然後按字母順序顯示第二個用戶類型。
谷歌,並在這裏搜索,只有適度的啓發,因爲大多數例子似乎並不複雜。這可能很簡單,但我沒看到它。任何幫助,將不勝感激。
$sql = "SELECT UserID FROM vw_AgentService WHERE StateID = ".$state.
"AND OrgID = ".$org.
"AND ServiceID = ".$service; //JOIN
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
die(print_r(sqlsrv_errors(), true));
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
$sqlb = "SELECT * FROM vw_UserInfo WHERE UserId = ".$row["UserID"].
" AND (UserType = 1 OR UserType = 2) ORDER BY UserType DESC, UserLastName"; //Herein lies the problem
$stmtb = sqlsrv_query($conn, $sqlb);
if ($stmtb === false) {
die(print_r(sqlsrv_errors(), true));
}
while ($rowb = sqlsrv_fetch_array($stmtb, SQLSRV_FETCH_ASSOC)) {
$sqlc = "SELECT * FROM vw_UserPhotoPath WHERE UserID = ".$row["UserID"];
$stmtc = sqlsrv_query($conn, $sqlc);
if ($stmtc === false) {
die(print_r(sqlsrv_errors(), true));
}
while ($rowc = sqlsrv_fetch_array($stmtc, SQLSRV_FETCH_ASSOC)) {
if ($rowc['PhotoFilePath'] === null) {
echo "<a href=\"profile.php?id=".$rowb["UserID"].
"\">".
"<li><img src=\"profile/blank-avatar.png\" width=\"100\" />";
} else {
echo "<a href=\"profile.php?id=".$rowb["UserID"].
"\">".
"<li><img src=\"http://demo-bc.cmfirsttech.com:8081/".$rowc['PhotoFilePath'].
"\" width=\"100\" />";
}
}
echo $rowb["UserFirstName"].
" ".$rowb["UserLastName"].
"<br/><span class=\"info\">".$rowb["UserTitle"].
", ".$rowb["UserCompany"]; // Should the ORDER BY actually go here?
//.</span></a></li>"; //rm </br>, add ", "
}
}
我已經告訴了ORDER BY通常會在年底,但我不知道我理解的邏輯,因爲在這一點上它只是附和我已經有數據。
你說得對,當你通過UserID獲取一行時,你不會訂單。但是,處理UserID的順序來自第一個SELECT語句(位於代碼塊的頂部),並且您可以對該查詢使用ORDER BY – stifin
在bobby表在您的sql中出現不受歡迎的外觀之前,您應該閱讀本文服務器。 http://bobby-tables.com/php.html –
我被告知Bobby Tables問題。截至目前,我的意思是按照用戶類型來分類。在我甚至可以開始解決這個問題之前,我還有很多需要了解SQL注入的知識。但是,謝謝你的擡頭。 – hederaLC