2012-01-15 38 views
0

我使用下面的查詢從數據庫中提取記錄:利用SQL別名(AS)在PHP

$query = "SELECT password, salt, 'jobseeker' as type 
FROM ip_jobseekers 
WHERE ipJ_username = '$username' 
UNION 
SELECT password, salt, 'company' as type 
FROM ip_companies 
WHERE ipC_username = '$username';"; 

$result = mysql_query($query); 

//No Such User 
if (mysql_num_rows($result) < 1) { 
    header('Location: login.php?login=fail'); exit;} 

創建一個新的會話:

//login successful 
else {$_SESSION['user'] = $username;} 

我想在會話中包含用戶類型,以便我可以指定向用戶顯示哪些內容。是否可以使用「'公司'作爲類型」和「求職者'作爲類型」部分查詢來做到這一點?我做了一些嘗試,但我沒有成功。

任何幫助將不勝感激。

謝謝。 凱。

+0

不要使用MYSQL_功能! – 2012-01-15 05:09:03

+1

我可以問爲什麼嗎?我剛纔知道該怎麼做,但是我不應該使用它嗎?恐怕我對此不太瞭解 – David 2012-01-15 05:11:27

+0

mysql_一套函數實際上並不知道是否有錯誤,他們只是默默地死亡。 – 2012-01-15 05:13:06

回答

-2

首先,您正在使用mysql_函數集,這是非常危險的,您應該從ASAP移動所有代碼。然後,你不應該把這樣的查詢串起來,因爲你的應用程序到處都會變成這個SQL巨無霸(在HTML中,在視圖中,無處不在),你應該使用某種類/對象系統包裝SQL。

而且,您應該瞭解SQL AND子句(我覺得可怕的鏈接w3schools,但是,這是我現在可以找到的)。

+2

在mysql_函數集中有什麼非常危險的東西?你能舉個例子來證明你的話嗎? – 2012-01-15 05:52:23

+0

他們實際上並沒有告訴你有關錯誤,他們只是默默地死去。 – 2012-01-15 15:06:40

+1

mysqli也是這樣做的。這是否「非常危險」呢? – 2012-01-15 15:30:39

0

找到您所查詢的任何錯誤,您可以運行查詢像下面

$result = mysql_query($query) or trigger_error(mysql_error()." ".$query); 

測試你可以在上面使用,你CA重定向到自定義錯誤頁在生產環境中。

我個人的建議是使用PDO。利用面向對象的程序來更快地運行你的代碼並獲得標準結構。

+1

添加'無法運行'的話是沒有意義的,因爲錯誤信息本身就非常自然。它可以告訴你'查詢中有錯誤',所以不需要解釋其他任何東西。儘管添加查詢本身總是很方便。當然,不應該使用die(),而應該使用trigger_error()。它會告訴你發生錯誤的地方,並遵循服務器範圍的錯誤報告規則 – 2012-01-15 06:02:17

+0

@ Col. Shrapnel謝謝。您的評論是有道理的,謝謝你糾正我。 – 2012-01-15 06:37:23

1

絕對是在「常規」和別名字段之間沒有區別。你可以使用後者以及任何其他的。