PHP错误 - 无法重新声明函数

问题描述:

我有一个调用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() – 2011-06-10 16:45:21

尝试include_once '../connect.php';它会确保你只包括一次这个文件

+0

的include_once事情做的伎俩 - 谢谢! – Genadinik 2011-06-10 16:50:53

+1

@Genadinik您还应该阅读@Fosco写关于您的错误的内容。试着通过重做你的程序逻辑来修复你的错误,'include_once'和'required_once'不是很理想,因为它们都会消耗宝贵的系统资源来判断文件是否已经被包含/需要。 – afarazit 2011-06-10 16:58:22

+0

在某些情况下,在其中一个子文件php文件中可能会有一个额外的include语句,那就是我发现我的错误的地方。 incude_once在这些情况下不起作用。 – 2016-07-20 02:56:05

看看你的文件和包括...你是宣称功能的两倍,这是错误。它与MySQL,数据库连接或mysql_real_escape_string()无关。

I.e.您可能包含文件A和文件B,但文件A已经包含文件B ...您可以确定包含错误的位置,或使用include_oncerequire_once来防止其重新加载。

可能您包含该文件多次。使用require_once而不是include。

你不能使用mysql_real_escape_string(),因为connect.php很可能会建立你的数据库连接。我的猜测是有另一个包含(也许'functions.php')具有相同的功能。

你可能有这样的事情:

功能hassuspicioushackerstrings($输入){}

在connect.php

,您可以添加if(!function_exists('hassuspicioushackerstrings')) {}周围的功能。

永远不要在另一个函数内创建或声明一个函数。但是你仍然可以在函数内使用其他函数。例如,以下内容不正确

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