【问题标题】:Having problems with cannot redeclare遇到无法重新声明的问题
【发布时间】:2012-02-14 03:56:11
【问题描述】:

我刚写完这个脚本并让它工作,但我需要在一页上总共使用它 8 次。它第一次工作正常,但第二次我得到:致命错误无法重新声明 get_names()。我被告知解决这个问题的方法是使用 include_once 但我似乎无法弄清楚我应该如何做到这一点。我尝试从代码中删除两个 get_names 部分并将它们放入单独的 php 文件中,然后使用 include_once 命令。我让它工作,但在尝试使用脚本两次后我又遇到了同样的错误。我还尝试将整个脚本放入一个 php 文件中,然后使用 include_once("scriptname.php") 命令,同样的事情发生了。所以我的问题是我究竟如何剪切这个脚本,这样我就不会再收到这个错误了?

<?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函数,如果你在不同的文件中声明了它,使用include_once("fileName.php");在您当前的页面中。

标签: php mysql redeclare


【解决方案1】:

将 getNames 函数放入 afile.php 并在开始时包含该函数。从当前文件中取出 getNames 函数。

事情是这样的

在第一个 php 文件中(比如说)你有这个代码 - filea.php

 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;

}

你的第二个文件将有 fileb.php

 $db = mysql_connect('localhost', 'username', 'pass') or die("Database error");
 ..... rest of source code excluded. Make sure you get rid of getNames in this file

现在只需照常包含

include 'filea.php'; // include it once only


include 'fileb.php'; // as many times as your wish

或者只是将您的代码包装在一个函数中并调用它

【讨论】:

    【解决方案2】:

    如果您使用此脚本 8 次,则将整个内容放在一个函数中并调用该函数 8 次,而不是复制粘贴。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      相关资源
      最近更新 更多