2013-05-05 3 views
0

데이터베이스에서 값을 검색하는 두 가지 함수가 있습니다. 함수 내에서 연결 ($connection)에 액세스 할 때 DB에 액세스 할 수 없습니다. 데이터베이스 연결에 대한 참조입니다 그 기능에 인수를 전달하는, 더 나을require_once가 함수 내에서 작동하지 않습니다.

<?php 
function getTierOne() 
{ 
    require_once('../config.php'); 
    $provincequery="SELECT provinces.ProvinceID, provinces.ProvinceName FROM provinces WHERE ProvinceID > 0"; 
     $result = $connection->query($provincequery); 
     while($province = $result->fetch_assoc()) 
     { 
      echo '<option value="'.$province['ProvinceID'].'">'.$province['ProvinceName'].'</option>'; 
     } 

} 

//************************************** 
//  First selection results  // 
//************************************** 
if(isset($_GET['func']) && $_GET['func'] == "province") 
{ 
    province($_GET['drop_var']); 
} 

function province($drop_var) 
{ 
    require_once('../config.php'); 

    $district_query = "SELECT districts.DistrictID, districts.DistrictName, provinces.ProvinceName FROM districts, provinces WHERE      provinces.ProvinceID=districts.ProvinceID AND districts.DistrictID > 0 AND provinces.ProvinceID='$drop_var'"; 

    $district_query_run= $connection->query($district_query); 
    echo '<select name="district" id="district" style="width:150px;"> 
      <option value="0" disabled="disabled" selected="selected">Select Your District</option>'; 

      while($district= $district_query_run->fetch_assoc()) 
      { 
       echo '<option value="'.$district['DistrictID'].'">'.$district['DistrictName'].'</option>'; 
      } 

    echo '</select>'; 
    echo "<script type=\"text/javascript\"> 
$('#wait_2').hide(); 
    $('#district').change(function(){ 
     $('#wait_2').show(); 
     $('#result_2').hide(); 
     $.get(\"ProDisPds/func.php\", { 
     func: \"district\", 
     drop_var: $('#district').val() 
     }, function(response){ 
     $('#result_2').fadeOut(); 
     setTimeout(\"finishAjax_tier_three('result_2', '\"+escape(response)+\"')\", 400); 
     }); 
     return false; 
    }); 
</script>"; 
} 
?> 
+0

작동하지 않는 것이 명확하지 않습니다. 문제가 무엇인지 더 잘 설명 할 수 있습니까? (오류 메시지, 예상 동작 대 실제 동작 ...) – Tchoupi

+2

요구 사항이 작동하지 않으면 PHP에서 오류 메시지를 표시합니다. 함수의 시작 부분에'error_reporting (-1);'을 넣으십시오. 그러면 오류보고 기능이 켜집니다. – Daniel

+0

늦게 답장을 드려 죄송합니다. 아무런 오류 메시지가 표시되지 않습니다. 흰색 화면이 나타납니다. –

답변

1

그 기능의 내부에 필요하지 않은 고려하십시오 : 나는 코드를 mysql을 + PHP 여기

이다 사용하고 있습니다 . 이 기능을 사용하는 함수를 호출하기 전에

그래서 당신이 한 번만 그것을 할 수있을 때 시간을 많이 요구에 올 때 더 실용적이고 적은 오버 헤드,

require_once('../config.php'); 

을한다.

당신이 연결의 소스이기 때문에 config.php를 우리에게 보여 만의 잘,

$connection 

가 config.php를 내부에 정의되어 있다고 가정하자 isset

if($isset($connection)) 

그럼에도 불구하고 사용해야합니다, 설정 여부는 확실하지 않습니다. 설정이되어 있지 않다면 데이터베이스 연결 함수에 접근 할 수 있습니다.이 함수는 새로운 연결을 생성하기 위해 config 안에 있다고 가정합니다. 이 작동하지 않는 경우

$connection = if(isset($connection)) ? $connection : newConnection(); 

, 이것은 학교 프로젝트 나, 당신은 액세스 할 수있는 전역 변수로 연결을 정의하는 시도 할 수 비슷한입니다 :

ternary operator

여기에 유용 할 수 있습니다 파일 내에서, 그래서 당신은

$GLOBALS['connection'] = connect(); // Or $connection or whatever the function name was. 

그래서이

같은 뭔가를 할 수 config.php를이 내부처럼 뭔가를 할 수

내부의 파일이 필요합니다.

그러나 전역 변수를 사용하는 것은 위험하므로 다른 모든 방법을 시도하지 않으면 사용해서는 안됩니다.

구성 파일과 관련된 전체 코드를 표시하면 더 유용한 팁을 제공하게되어 기쁩니다.

두 가지 : 코드가 SQL injections에 취약하고 prepared statements을 사용하며 JavaScript와 PHP를 함께 사용하지 마십시오.

+0

한국어 대답이 좋지 않습니다. 영어로만 간단하게 작성하거나 코드를 편집하십시오. –

+2

@DawoodNazari에 오신 것을 환영합니다! Google은 까다로운 커뮤니티가 아니므로 상세한 답변을 제공하여 도움을 준 사용자의 요구를 삼가시기 바랍니다.특정 질문이있는 경우 게시자의 답변을 이해하고 의견을 게시하는 데 시간이 걸릴 수 있습니다. 감사! –

+0

여기에 config.php 페이지 코드가 있습니다.

관련 문제