Проблемы с не могут переопределить - PullRequest
0 голосов
/ 14 февраля 2012

Я только что закончил писать этот скрипт и заставил его работать, но мне нужно использовать его всего 8 раз на 1 странице. Он отлично работает в первый раз, но я получаю второй раз: Fatal Error не может переопределить 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;

} ?>

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

поместите функцию 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

или просто оберните ваш код в функцию и вызовите ее вместо

0 голосов
/ 14 февраля 2012

Если вы используете этот сценарий 8 раз, поместите все это в функцию и вызовите эту функцию 8 раз вместо вставки копии.

...