2013-05-18 39 views
0

我在我的php代碼中使用名爲$ user_id的變量。該變量在執行一段簡短的代碼腳本後取值。我在我的數據庫中也有一個名爲users的表,該表保存user_id和email。如果想從我的數據庫中選擇電子郵件,那麼當我的表中的user_id等於名爲$ user_id的變量時。我可以這樣做嗎?這是我的查詢:從php變量的幫助下從表中選擇一個值

<?php 

//code ... 

$user_id=$_GET['user']; //$user_id gets a value here 

//now I want to select email from table users, where user_id is equal to variable $user_id 

mysql_query(" SELECT `email` FROM `users` WHERE `user_id`='$user_id' "); 

?> 
+0

是的,你可以做到這一點。 – Naveed

+0

你有沒有試過''''?像'..WHERE user_id = $ user_id'? – ioanb7

+1

你可以!衝啊! –

回答

-2

的代碼應該是:

$email = ''; 
$res = mysqli_query(" SELECT `email` FROM `users` WHERE `user_id`='$user_id' "); 

while ($temp = mysqli_fetch_assoc($res)) { 
    $email = $temp['email'];  
} 
+0

'@ mysql_num_rows'是不好的做法。 – hjpotter92

+1

停止使用'mysql_ *'函數,現在不推薦使用它們,並使用字符串轉義來停止'sql injection'。更好地使用'mysqli'或'PDO'。你也壓制警告。 –

+0

我已經嘗試過......作品!謝謝 – 33528

1

是的,它會工作。我雖然建議您使用而不是mysql_*函數。他們已被棄用。

如果由於某些原因您不能切換到其中任何一個;你應該過濾/清理你的查詢。

此外,如果user_id是數字字段,則不需要將$user_id用引號引起來。

+1

雖然你的回答是正確的,但你真的認爲有人問這個問題有什麼想法你的意思是過濾/消毒查詢以及他應該怎麼做?我猜他會找到mysql_real_escape()方法,並結合你的參數來刪除引號,將創建一個SQL注入,而他認爲他是安全的 –

+1

我同意在PDO,Mysqli或兩者中添加一個例子會比只是重申他們不應該被使用。我說這應該是對這個問題的評論,除非你願意用一個例子說明如何完成這個問題的目標。 – prodigitalson

0

你的代碼有基礎知識,它只需要處理,我會添加一些檢查。

if(isset($_GET["user"]) && $_GET["user"] != "") //check there is a value for the user ID 
{ 
    if(is_int($_GET["user"])) 
    {  
     $user_id=$_GET["user"]); 
     $email=""; 
     $q=mysql_query("SELECT email FROM users WHERE user_id={$user_id}") or die(mysql_error()); 

     if(mysql_num_rows($q) > 0) 
     { 
      while($user=mysql_fetch_assoc($q)) 
      { 
       $email=$user["email"]; 
      } 
     } 
     else 
     { 
      echo "no users found"; 
     } 
    } 
    else 
    { 
     echo "Not a valid user ID, please enter numeric value"; 
    } 
} 
else 
{ 
    echo "No UserID"; 
} 

hjpotter92建議您使用的mysqli或PDO的質疑你的數據庫,我會雖然同時學習與MySQL保持爲有可用於學習更多的資源達成一致,那麼當確信移動到較新的技術。

請注意:我基於這種體驗,我覺得用戶使用PHP和MySQL的經驗並非最現代或最佳實踐。

+0

您可以至少添加一個數值檢查,而不是直接將GET值插入查詢 –

+1

我意識到發佈後,並已相應更新。 – Daniel

相關問題