0

このスクリプトを書き終えて動作するようになりましたが、1 ページで合計 8 回使用する必要があります。最初は問題なく動作しますが、2 回目には次のように表示されます。Fatal Error cannot redeclare get_names(). これを回避する方法は include_once を使用することだと言われましたが、それをどのように行うべきか正確にはわかりません。get_names の両方の部分をコードから切り取り、それらを別の php ファイルに入れてから、 include_once コマンドを使用してみました。動作するようになりましたが、スクリプトを2回使用しようとした後、もう一度同じエラーが発生しました。また、スクリプト全体を 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;

} ?>
4

2 に答える 2

0

このスクリプトを 8 回使用している場合は、全体を関数内に配置し、コピー貼り付けの代わりにその関数を 8 回呼び出します。

于 2012-02-14T03:58:41.577 に答える
0

getNames 関数を afile.php に入れ、それを最初に 1 回含めます。現在のファイルから 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;

}

2番目のファイルには 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

または、コードを関数でラップして、代わりにそれを呼び出します

于 2012-02-14T03:59:29.193 に答える