2013-07-05 4 views
1

함수 내에서 데이터베이스에 어떻게 연결합니까? ... 나는 현재이 작업을 수행 :함수 내에서 데이터베이스에 어떻게 연결합니까?

기본 DB에 연결 :

$conn = mysqli_connect('localhost', 'root', '', 'foo'); 

if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

기능 :

를 내부에 다시 ​​나는 연결 쿼리를 포함해야하는 함수를 작성
function cleanup($str, $real) { 
      if(get_magic_quotes_gpc() == true){ 
       $str = stripslashes($str); 
     } 

     $str = htmlspecialchars($str); 

    if($real == true) { 

     // connection query here again 

     $conn = mysqli_connect('localhost', 'root', '', 'foo'); 

     $str = mysqli_real_escape_string($conn,$str); 

     } 
     return $str; 
    } 

이것은 호스트, 사용자 및 패스 det를 추가해야하는 것처럼 나에게 어리석은 것처럼 보입니다. 괴롭히는 두 번, 나는 기본 연결은 어떻게 든 다음 코드의 그것의 사용을 만들 수 있습니다, 데이터베이스의 $의 CONN 인스턴스가 글로벌하십시오 모두

+2

왜 당신은 매개 변수로 함수에'$ conn'을 통과하지? 또는 클래스를 사용하고 conn 속성을 클래스 속성으로 설정하십시오. – andrewsi

+0

함수 단위로 DB에 연결하지 마십시오. 그것은 엄청나게 낭비입니다. 일반적으로 일종의 시작 스크립트에서 ** ONCE **를 연결 한 다음 해당 스크립트의 다른 모든 곳에서 해당 연결을 재사용합니다. –

답변

4

이것은 scope입니다. 함수 내부에서 전역 범위에 정의 된 변수에 자동으로 액세스하지 않습니다. 이 같은 함수의 로컬 범위에 '수입'변수를 할 수 있습니다

function cleanup($str, $real) { 
    global $conn; 

    if(get_magic_quotes_gpc() == true) { 
     $str = stripslashes($str); 
    } 

    $str = htmlspecialchars($str); 

    if($real == true) { 
     $str = mysqli_real_escape_string($conn,$str); 
    } 

    return $str; 
} 
+1

HttpNinja에 감사드립니다. –

1
global $conn = mysqli_connect('localhost', 'root', '', 'foo'); 

처리를 수행하게 그것을 싶습니다.

if($real == true) { 
    global $conn; 
    $str = mysqli_real_escape_string($conn,$str); 
    } 
    return $str; 
} 
+0

'구문 분석 오류 : 구문 오류, 예기치', '예상', '또는'; '' –

+1

오류가 발생하는 것처럼 보입니다. 함수에'global $ conn;'을 추가하면된다. –

+1

이것이 실제로 오류의 원인입니다. Global은 함수 내에서만 사용해야합니다. – HttpNinja

관련 문제