2014-03-31 6 views
-2

PHP로 MYSQL 데이터베이스에 연결하려고합니다. 나는 내가 노력할 상관없이 어떤 두 가지 오류를 받고 없습니다 계속 :PHP로 MySQL 데이터베이스에 연결할 때 예기치 않은 토큰 오류가 발생했습니다.

구문 에러는 {스택 (...) 메시지 : "예기치 않은 토큰 A"를}

구문 에러 {스택 : (...), 메시지 : 물론

<?php 
    $host = "localhost"; 
    $port = 8889; 
    $username = "********"; 
    $password = "********"; 
    $database="***datebasename***"; 

    $server = mysql_connect($host, $user, $password); 
    if (!$server) { 
     echo mysql_error(); 
     die; 
    } 
    $connection = mysql_select_db($database, $server); 

    if (isset($_GET['type'])) { 
     $type = $_GET['type']; 
    } else { 
     $type = "null"; 
     echo "Type not passed"; 
    } 

    if($type=='load'){ 
     $string = ''; 
     $gene = $_GET["gene"]; 
     $data = $_GET["data"]; 

     $myquery = "select gene_data.gene_data from genes inner join gene_data on genes.id=gene_data.g_id where genes.name ='$gene' and genes.type='$data'"; 
     $query = mysql_query($myquery); 

     if (!$myquery) { 
      echo mysql_error(); 
      die; 
     } 

     if (!$query) { 
      echo mysql_error(); 
      die; 
     } 


     $data = array(); 
     for ($x = 0; $x < mysql_num_rows($query); $x++) { 
      $data[] = mysql_fetch_assoc($query); 
     } 

     echo json_encode($data); 
     mysql_close($server); 
    } 
?> 

내 사용자 이름, 암호 및 데이터베이스 이름에 대한 현실적인 문자열을 가지고 : "예기치 않은 토큰 N은"}

다음 내가 가지고있는 현재의 코드입니다.

+1

오류가있는 행을 말하고 있습니까? –

+0

'$ gene'과'$ data'의 값은 무엇입니까? 그것은 SQL 주입 문제 일 수 있습니다. –

+0

mysql_ * 함수를 사용하여 새로운 코드를 작성하지 마십시오. 그들은 비추천화되고 있으며 향후 PHP 버전에서 삭제 될 예정입니다. 대신에'msqli_ *'또는 PDO를 사용하십시오. –

답변

0

$ username을 정의했지만 mysql_connect 함수에서 $ user를 사용했습니다.

<code> 

    while ($row = mysql_fetch_assoc($result)) { 
     echo $row["userid"]; 
     echo $row["fullname"]; 
     echo $row["userstatus"]; 
    } 

</code> 

그리고 난 당신이 이러한 기능을 잊지해야하며, 어쩌면 당신이 PDO를 사용할 수 있다고 생각 : 예를 들어 가져 ASSOC를 사용

올바른.

+0

매우 멋지게 발견되었습니다. 정말 고마워, 그게 내 문제를 해결! – Vanquiza

+0

대신 PDO를 사용하기 위해 전체 php 파일을 다시 작성해 보았습니다. PDO를 사용하여 코드의 마지막 5 줄을 어떻게 수행하는지 설명 할 수 있습니까? 나는 그것에 대해 조금 혼란스러워 보인다. – Vanquiza

+0

확인. 나는 너에게 설명 할 충분한 시간이 없지만 어쩌면 너는 이것을 사용할 수있다 : self :: $ statement = self :: $ pdo-> prepare ($ sql); self :: $ 문 -> setFetchMode (PDO :: FETCH_ASSOC); self :: $ statement-> execute(); – system7

1

코드에 echo 문장이 있습니다 (특히 echo mysql_error()이 몇 번 나타납니다). 이러한 오류가 출력되면 다음과 같은 결과가 표시됩니다.

An error occurred[{"id":"1","name":"test"}] 

즉, 실제 JSON 다음에 오류 메시지가 나타납니다.

브라우저가이 구문을 분석하려고하면 첫 번째 문자가 예기치 않게 발생하므로 위 예제에서 Unexpected token A을 반환합니다.

개발자 도구의 네트워크 탭에서 브라우저가 정확히 무엇을 보내고 있는지 확인하십시오. 거의 확실하게 어떤 종류의 오류가 표시됩니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 네트워크 탭을 확인했는데 모든 것이 정상이라고합니다. 다음은 상태 스크린 샷의 링크입니다. http://puu.sh/7QJsb.png – Vanquiza

+1

@Vanquiza Niet의 의미는 아닙니다. 항목을 클릭하여 서버 응답의 실제 내용을보십시오. –

관련 문제