解决方法无法重新声明?

时间:2012-02-14 01:53:22

标签: php mysql redeclare

我刚刚完成了这个脚本的工作,我需要在同一页面中多次使用它。然而,当我第二次使用它时,我得到错误致命错误:无法重新声明get_names()(之前已声明。我环顾四周寻找答案,但我能找到的只是使用一次命令,但它似乎不起作用与get。这是脚本:

<?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;

}     ?&GT;

4 个答案:

答案 0 :(得分:2)

这是一个丑陋的黑客,但你可以把它放在这个功能:

if ( !function_exists("get_names") ) {

/// the function

}

更好的方法当然是include_once("includefile.php");,其中includefile.php包含相关功能(注意:includefile.php还需要打开和关闭<?php ?>标签。)< / p>

答案 1 :(得分:2)

您可以将功能包装在if(!function_exists('get_names'))中,或者使用include_oncerequire_once来包含文件而不是include或修复您的调用脚本以不包含它两次(或更多)。

答案 2 :(得分:1)

将函数定义放入其自己的文件中,并在该文件的页面顶部调用include(或require)。

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')它,那么你应该可以运行剩下的代码了。多次。

答案 3 :(得分:0)

你可以尝试:

<?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;
}