2013-05-18 3 views
0

$ user_id라는 PHP 코드에서 변수를 사용하고 있습니다. 이 변수는 짧은 코드 스크립트를 실행 한 후에 값을받습니다. 또한 내 데이터베이스에 users라는 테이블이 있고이 테이블에는 user_id와 전자 메일이 있습니다. 내 테이블에서 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 주입'을 중지하기 위해 문자열 이스케이프를 사용합니다. 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는, 당신은 내가 학습에 사용할 더 많은 자원이 있기 때문에 MySQL과 계속 배우면서하지만 동의 할 데이터베이스를, 심문을 위해 mysqli 또는 PDO를 사용하는 것이 새로운 기술 위에 때 자신이 이동하는 것이 좋습니다.

참고 : 필자는 사용자가 PHP 및 MySQL을 사용하여 얻은 경험이 가장 현대적이거나 모범 사례가 아니라고 생각합니다.

+0

GET 값을 쿼리에 직접 삽입하는 대신 숫자 값을 최소한으로 체크 할 수 있습니다. –

+1

게시 후이를 깨닫고 그에 따라 업데이트했습니다. – Daniel

관련 문제