2011-06-10 3 views
7

PHP 스크립트를 호출하는 JavaScript 함수가 있습니다. 여태까지는 그런대로 잘됐다. 나는이 작업을 수행 할 때 문제가 발생합니다PHP 오류 - 함수를 다시 선언 할 수 없습니다.

$hike_id = mysql_real_escape_string($_GET['hike_id']); 

내 연결 파일을 가져올 때, 그것은 나에게 해당 파일의 기능이 이미 정의되어 있다는 오류를 제공하고 오류가 이것이다 :

[Fri Jun 10 12:34:43 2011] [error] [client 75.24.105.18] PHP Fatal error: Cannot redeclare hassuspicioushackerstrings() (previously declared in /home/webadmin/comehike.com/html/connect.php:16) in /home/webadmin/comehike.com/html/connect.php on line 40 

참조하는 오류는 연결 스크립트에있는 함수입니다.

하지만 그런 다음

include '../connect.php'; 

를 제거하면 그냥 내가는 mysql_real_escape_string 기능을 사용할 수 없습니다 말해 것입니다. 그래서 두 옵션 중 하나를 사용할 수 없다는 것 사이에 끼어 있습니다.

+0

'hassuspicioushackerstrings()'을 (를) 선언 한 파일을 포함하고있는 것처럼 보입니다. 나는 이것이 mysql_real_escape_string()과 관련 있다고 생각하지 않는다. –

답변

11

은 만 파일을 살펴보십시오이 파일

+0

include_once가 트릭을했다. 고마워! – Genadinik

+1

@Genadinik 당신은 또한 @ Fosco가 귀하의 오류에 관해 쓴 내용을 읽어야합니다. 프로그램 논리를 재실행하여 오류를 수정하려고하면,'include_once'와'required_once'는 파일이 이미 포함되어 있거나 필요한지 알아내는 데 귀중한 시스템 자원을 소비하므로 이상적이지 않습니다. – afarazit

+0

어떤 경우에는 어린이 PHP 파일 중 하나에 추가로 include 문이있을 수 있습니다. 즉, 내 오류를 발견했습니다. incude_once는 이러한 상황에서 도움이되지 않습니다. –

3

번을 포함하고 있으며 사용자의 당신은 그 오류이다, 두 배 기능을 선언하는 ...이 포함되어 있는지 확인합니다 include_once '../connect.php';을 시도합니다. MySQL, 데이터베이스 연결 또는 mysql_real_escape_string()과 아무 관련이 없습니다.

e.e. 파일 A와 파일 B를 포함 할 수 있지만 파일 A에는 이미 파일 B가 포함되어 있습니다 ... 포함 항목이 잘못 될 수있는 곳을 파악하거나 이중로드를 방지하기 위해 include_once 또는 require_once을 사용할 수 있습니다.

2

파일을 여러 번 포함 할 가능성이 있습니다. include 대신 require_once를 사용하십시오.

1

connect.php가 데이터베이스 연결을 설정하기 때문에 mysql_real_escape_string()을 사용할 수 없습니다. 내 생각 엔 같은 기능을 가진 또 다른 인클루드 (아마도 'functions.php')가있다. 이 기능 주위 if(!function_exists('hassuspicioushackerstrings')) {}을 추가 할 수 있습니다,

기능 hassuspicioushackerstrings ($ 입력) { } 당신의 connect.php에

:

당신은 아마 이런 일이있다.

0

다른 함수 안에 함수를 만들거나 선언하지 마십시오. 그러나 함수 내에서 여전히 다른 함수를 사용할 수 있습니다. 예를 들어, 다음은 올바르지 않습니다.

function addition($a, $b) 
{ 
    function subtraction(){ 
    } 
    return $a+$b; 
} 
관련 문제