2011-06-10 25 views
7

Tengo una función de JavaScript haciendo una llamada a un script PHP. Hasta aquí todo bien. Un problema que ocurre cuando trato de hacer esto:Error de PHP - No se puede redeclarar la función

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

Cuando importo mi archivo de conexión, me da un error que las funciones de ese archivo ya se han definido y el error es la siguiente:

[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 

El error al que se refiere es una función que está en el script de conexión.

Pero si quito el

include '../connect.php'; 

Entonces, sólo me va a decir que no puedo utilizar la función mysql_real_escape_string. Así que estoy algo atrapado entre no poder usar ninguna de las opciones.

+0

Parece que incluye el archivo que declara 'hassuspicioushackerstrings()'. No creo que esto tenga que ver con mysql_real_escape_string() –

Respuesta

11

tratar include_once '../connect.php'; que va a asegurarse de que sólo está incluida una vez que este archivo

+0

la función include_once hizo el truco, ¡gracias! – Genadinik

+1

@Genadinik, también debe leer lo que @Fosco escribió sobre su error. Intenta corregir el error rehaciendo la lógica de tu programa, 'include_once' y' required_once' no son ideales ya que ambos consumen valiosos recursos del sistema para determinar si un archivo ya está incluido/requerido o no. – afarazit

+0

En algunos casos puede haber una declaración de inclusión adicional dentro de uno de los archivos php secundarios, es donde encontré mi error. El incude_once no ayuda en estas situaciones. –

3

Tome un vistazo a sus archivos y su incluye ... Usted está declarando que la función dos veces, es decir el error. No tiene nada que ver con MySQL, conexiones de bases de datos o mysql_real_escape_string().

I.e. Puede incluir el archivo A y el archivo B, pero el archivo A ya incluye el archivo B ... Puede averiguar dónde van mal sus integrantes o puede usar include_once o require_once para evitar que se cargue por la mitad.

2

Es probable que esté incluyendo el archivo varias veces. Use require_once en lugar de include.

1

no puede usar mysql_real_escape_string() porque connect.php es muy probable que configure su conexión a la base de datos. Creo que hay otra inclusión (quizás 'functions.php') que tiene la misma función.

es probable que tenga algo como esto:

hassuspicioushackerstrings de función ($ entrada) {}

en su connect.php, se podría añadir if(!function_exists('hassuspicioushackerstrings')) { y } alrededor de la función.

0

Nunca cree o declare una función dentro de otra función. Pero aún puede usar otras funciones dentro de una función. Por ejemplo, lo siguiente no es correcto

function addition($a, $b) 
{ 
    function subtraction(){ 
    } 
    return $a+$b; 
} 
Cuestiones relacionadas