2012-05-10 6 views
-2

이 코드가 작동하지 않는 이유는 무엇입니까?if 문이 데이터베이스에서 작동하지 않습니다.

$welcome = mysql_query("SELECT welcome FROM users WHERE id = '" . $_SESSION['user']['id'] . "'"); 

if($welcome == '0') 
{ 
echo 'register is 0'; 
} 
else 
{ 
echo 'register is 1'; 
} 

$_SESSION['user']['id']은 1을 반환합니다.

+0

제공하신 데이터가 거의 없으므로 Brooke를 도와 드릴 수 없습니다. 직접 디버깅해야합니다. 'SELECT welcome FROM users = '1'의 결과는 무엇입니까? 그 이드를 인용하고 싶습니까? –

+0

내가하려고하는 것은 obv가 아니 ... –

+1

아마도 사용자 이름이'Robert '이기 때문에); DROP TABLE 학생; -'. – PeeHaa

답변

3

MySQL은 성공시 resource을 반환하고, 쿼리의 값은 오류가 아니며 오류가 발생하면 false를 반환합니다. 이것을 시도하십시오 :

$welcome = mysql_query("SELECT welcome FROM users WHERE id = '" . $_SESSION['user']['id'] . "'"); 
$row = mysql_fetch_assoc($welcome); 
if($row['welcome']== '0') 
{ 
echo 'register is 0'; 
} 
else 
{ 
echo 'register is 1'; 
} 
1

SQL 인젝션 공격으로부터 보호되지 않으므로 쿼리를 작성하지 마십시오.

$query = sprintf("SELECT welcome FROM users WHERE id = %d", $_SESSION['user']['id']); 
// Perform Query 
$result = mysql_query($query); 

일단 완료되면 결과에서 가져와야합니다. 단지 쿼리 만 할 수 없습니다.

if(!$result) 
    echo "Error"; // Deal with it 
$row = mysql_fetch_assoc($result); 
echo $row['welcome']; 
mysql_free_result($result); 
0

MySQL 설명서에 따르면 select 문이 성공적이면 리소스가 반환되고 실패하면 'false'가 반환됩니다. 당신이 달성하려고하는 것을 달성하기 위해 더 나은, 더 안전한 방법이 있지만
, 당신의 문에 간단하게 수정 될 수 있습니다

 
if($welcome === false) 
{ 
  echo 'register is 0'; 
} 
else 
{ 
  echo 'register is 1'; 
} 

작동 할 수 있지만, 앞서 말했듯이, 전체 코드에 필요 더 안전한 버전으로 업데이트하십시오.

관련 문제