2013-04-10 5 views
2

PHP 스크립트에 문제가 있습니다. 배열에 아무것도 있으면 내 스크립트를 확인하고 메시지를 반향 할 수는 없지만 배열이 비어 있으면 아무것도 표시하지 않습니다. 내 코드의mysql에서 배열 결과 계산하기

:

include("mysql_connect.php"); 
$name = $_POST['playerName']; 
$users = mysql_query('SELECT * FROM playerdata WHERE username LIKE "'.$name.'%"'); 
     if($name==""){ 
     echo 'Type in player name!'; 
    }else{ 
while($usersList= mysql_fetch_assoc($users)){ 
    if(!array_count_values($usersList)){ 
     echo 'Player not found'; 
    }else{ 
     echo $usersList['username'].', '; 
    } 
}//While end. 
}//If name is empty end. 
+0

변수 이름 앞에 ''이 없습니다. –

+0

아니요. 사용하지 않기 때문에 아닙니다. –

답변

1

앞서 언급했듯이 루프 전에 행을 확인해야합니다. 문제는 보인다

$rows = mysql_num_rows($users); 
if($rows==0) echo "No rows.."; 
else { 
    foreach() { 
+0

그것은 작동합니다! 고마워요. D –

0

대신

if(!array_count_values($usersList)){ 

사용

귀하의 while 루프는 늘 $ 사용자가 비어 있습니다, 그래서 조건 경우 실행
if(empty($usersList)){ 
+0

여전히 그렇습니다./ –

0

:

if(!array_count_values($usersList)){ 
     echo 'Player not found'; 
    } 

은 절대로 실행되지 않는 루프에 들어 있기 때문에 충족되지 않습니다.

+0

$ name이 (가) 별도의 값이 아니기 때문에 아니오 –

+0

다음을 추가하십시오 : echo 'here'; if (! array_count_values ​​($ usersList)) {그리고 루프가 실행 중인지 확인하십시오 – richelliot

+0

시작하지만 비어있을 때 참조하십시오 아무것도하지 않습니다 –

1

은 사용자가 invalid 이름을 입력하면

include("mysql_connect.php"); 
$name = $_POST['playerName']; 

if($name === ""){ 
    echo 'Type in player name!'; 
} else { 
    $users = mysql_query('SELECT * FROM playerdata WHERE username LIKE "'.$name.'%"'); 

    if (mysql_num_rows($users) == 0) { 
     echo "Invalid Player name provided"; 
    } else { 
     while($usersList= mysql_fetch_assoc($users)){ 
     { 
      echo $usersList['username'].', '; 
     } //While end. 
    } 
}//empty name 

을 다음과 같이 쿼리가 단순히 code이 있어야 할 행을 찾을 수없는 한, while loop이 실행되지 않는 것입니다 참고 :

  1. 추한 모습으로 내가 re-formatted 코드를
  2. 사용자가 이름에 대한 일부 텍스트를 제공하는 경우에만 쿼리가 실행됩니다. 이유는 empty 일 때 execute이라는 쿼리가 사용됩니다!