2012-03-04 4 views
1

이 PHP 코드가 있습니다. 이에 따라 유효성을 검사하고 적절하게 가져옵니다.하지만 쿼리가 실행되지만 빈 화면으로 끝나기는하지만. 나는 위치를 die()와 논평했다;PHP 코드가 공백 화면으로 끝납니다

for ($z = 0; $z < count($track); $z++) { 
    if (in_array($track[$z], $already_track)) { 
     $at_key = array_search($track[$z], $already_track); 
     $a = explode(":", $artist[$z]); 
     $b = explode(":", $already_artist[$at_key]); 
     $array_compared = array_diff($a, $b); 

     if (empty($array_compared)) { 
      continue; 
     } else { 
      $sql = mysql_query("INSERT INTO tracklist(aid, sid, rid, added_by, added_on) VALUES('".$album."', '".$track[$z]."', '".$artist[$z]."', '".$_SESSION["userkey"]."', '" . $time . "')") or die(mysql_error()); 
      //die("Yes Here"); //My code output blank screen after this query. Though query fired successully. 
     } 
    } else { 
     $sql = mysql_query("INSERT INTO tracklist(aid, sid, rid, added_by, added_on) VALUES('".$album."', '".$track[$z]."', '".$artist[$z]."', '".$_SESSION["userkey"]."', '" . $time . "')") or die(mysql_error()); 
    } 
} 
+0

"빈 화면"은 PHP가 브라우저가 아닌 오류 로그에 오류를 출력하도록 구성되어 있음을 나타낼 수 있습니다. 오류 로그는 무엇을 말하고 있습니까? – imm

답변

1

첫째, 모든 오류를 사용할 수 있도록 스크립트의 상단에이 줄을 설정합니다 : 다음

error_reporting(-1); 

을 나는 것 스크립트가 "if"의 "true"부분에 있는지 아니면 "false"(else)에 있는지 확인하기 위해 화면에 무엇인가를 인쇄하십시오.

마지막으로 SELECT 문에 입력 한 모든 변수를 화면에 덤프합니다. 변수가 이스케이프되지 않으므로 오류가있는 것일 수 있습니다. SQL 문을 출력하고 MySQL에서 직접 실행하면 오류가 해당 부분에서 왔는지 여부를 알려줍니다.

데이터에있는 모든 인용문 (단일 또는 이중)이 SQL에 영향을 줄 수 있습니다.

편집 코드는 다음과 같습니다

for ($z = 0; $z < count($track); $z++) { 
     if (in_array($track[$z], $already_track)){ 
      $at_key = array_search($track[$z], $already_track); 
      $a = explode(":", $artist[$z]); 
      $b = explode(":", $already_artist[$at_key]); 
      $array_compared = array_diff($a, $b); 
      if(empty($array_compared)){ 
       continue; 
      } else { 
       $sql = "INSERT INTO tracklist(aid, sid, rid, added_by, added_on) VALUES('".$album."', '".$track[$z]."', '".$artist[$z]."', '".$_SESSION["userkey"]."', '" . $time . "')"; 
       echo 'First else.'; 
       var_dump($track, $artist, $album, $_SESSION["userkey"]); 
       $res = mysql_query($sql); 
       var_dump($res); 
      } 
     } else { 
      $sql = "INSERT INTO tracklist(aid, sid, rid, added_by, added_on) VALUES('".$album."', '".$track[$z]."', '".$artist[$z]."', '".$_SESSION["userkey"]."', '" . $time . "')"; 
      echo 'Second else.'; 
      var_dump($track, $artist, $album, $_SESSION["userkey"]); 
      $res = mysql_query($sql); 
      var_dump($res); 
     } 
    } 

가 도움이 희망!

+0

'error_reporting'을'-1'로 설정하면 즉시 전구에 불이 들어오지 않을 수 있습니다. 거기에는'E_ALL'이 있습니다. 어쨌든 +1. –

+0

@Linus : PHP 버전에 따라 E_ALL과 -1은 같은 동작을하지 않습니다. 여기서 PHP 버전을 사용할 수 없습니다. – Maxime

+0

호기심에서 벗어나이 작업 예제를보고 싶습니다. 문서의 "팁"(http://php.net/manual/en/function.error-reporting.php)은 꽤 모순 된 것처럼 보입니다. 4.x에서'E_ALL'은 그것이 (아직) 알지 못하기 때문에'E_DEPRECATED'를 커버하지 않을 것입니다. 다음에 건너 뛴 오류 메시지는 무엇입니까? –

1

는 출력 뭔가하지 않으면 빈 화면으로 실행을 종료하는 것은 정상입니다. 차기에 대한 코드의 끝 부분이 추가 시도하고 자자 :

echo('This is a test...'); 
+0

적어도이 코드 뒤에'header()'를 사용 했으므로 루프를 완료해야합니다. – Tisha