我刚刚完成了这个脚本的工作,我需要在同一页面中多次使用它。然而,当我第二次使用它时,我得到错误致命错误:无法重新声明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;
答案 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_once
或require_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;
}