解决方法无法重新声明?
我刚刚完成了这个脚本的工作,我需要在同一页面中多次使用它。但是,当我第二次使用它时,我得到了错误致命错误:无法重新声明get_names()(之前声明过)。我环顾四周寻找答案,但我能找到的所有东西都是使用once命令,但似乎不起作用与到达这里是脚本:?解决方法无法重新声明?
<?php
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error");
mysql_select_db('dbname', $db);
$query = "SELECT pool FROM winners";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
if ($row['pool'] % 2) {
echo "<h4>Result 1</h4>";
$names = get_names(1);
foreach($names as $name) {
echo $name . "<br/>";
}
} else {
echo "<h4>Result 2</h4>";
$names = get_names(0);
foreach($names as $name) {
echo $name . "<br/>";
}
}
function get_names($pool_result)
{
$name_array = array();
$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
array_push($name_array, $row['name']);
}
return $name_array;
} >
把函数定义成在该文件的页面顶部它自己的文件,并调用包括(或需要)一次
get_names正在被定义不止一次,所以第二次上升一个致命的错误。
编辑:
的唯一部分需求是在它自己的文件函数定义:
function get_names($pool_result)
{
$name_array = array();
$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result))
array_push($name_array, $row['name']);
return $name_array;
}
虽然我和肯定其他人会主张码的进一步组织,如果你把这个函数放在一个像library.php之类的文件中,然后require_once('path/to/library.php')
它,你应该可以多次运行它的其余部分。
这是一个丑陋的黑客攻击,但你可以把这个周围的功能:
if (!function_exists("get_names")) {
/// the function
}
当然,更好的办法是include_once("includefile.php");
,与includefile.php
包含在问题(注意函数:includefile.php
也需要开启和关闭<?php ?>
标签)。
我只是试过这个,我仍然得到相同的错误。需要将哪些部分放入我正在使用include_once的php文件中? – user1206214 2012-02-14 03:41:14
'function get_names($ pool_result){...}'部分。或者你可以把这个函数放在显然包含脚本的文件中多次。 – mvds 2012-02-14 10:23:21
你可以用功能在if(!function_exists('get_names'))
,或使用include_once
或require_once
包含的文件,而不是include
或解决您调用脚本不包括两次(或更多)。
你可以尝试:
<?php
$db = mysql_connect('localhost', 'username', 'pass') or die("Database error");
mysql_select_db('dbname', $db);
$query = "SELECT pool FROM winners";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
if ($row['pool'] % 2) {
echo "<h4>Result 1</h4>";
$names = get_names(1);
foreach($names as $name) {
echo $name . "<br/>";
}
} else {
echo "<h4>Result 2</h4>";
$names = get_names(0);
foreach($names as $name) {
echo $name . "<br/>";
}
}
if(!function_exists("get_names")) {
function get_names($pool_result)
{
$name_array = array();
$query = "SELECT * FROM comments WHERE commentid % 2 = $pool_result";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
array_push($name_array, $row['name']);
}
return $name_array;
}
我刚试过这个,它仍然给我同样的错误 – user1206214 2012-02-14 02:12:28
我只是尝试这样做,我仍然得到同样的错误。需要将哪些部分放入我正在使用include_once的php文件中? – user1206214 2012-02-14 03:40:39
我在那里扔了一些代码,看看它是否有帮助。 – quickshiftin 2012-02-14 04:46:37