Поэтому я ввел несколько цитат в базу данных и хотел отобразить их в блоке нижнего колонтитула моей страницы форума phpbb3.
Я создал файл для подключения к базе данных и запрос под названием «ligacao.php»:
<?php
$ligacao = new mysqli("localhost","starwmjz_mike","PASSWORD","starwmjz_pallet");if($ligacao->connect_error){
die("Error:" . $ligacao->connect_errno . "," . $ligacao->connect_error);
}
$ligacao->set_charset("utf8");
$tipQuery = $ligacao->query("SELECT tipQuote FROM tips ORDER BY rand() limit 1");
?>
И в блок нижнего колонтитула я добавил эти строки:
<div id="col1">
<!-- Column one content beginning -->
<!-- INCLUDEPHP http://pallet-town.net/backend/ligacao.php -->
<!-- PHP -->
echo $tipQuery;
<!-- ENDPHP -->
<!-- Column one content end -->
</div>
MySQL находится на том же сервере, но не используется phpbb в любом другом экземпляре
Запрос работает отлично, так как я проверял его перед использованием.
Результатом является пустой блок нижнего колонтитула.
Я включил PHP на ACP.
Любая помощь и предложения приветствуются, спасибо.
Вы пропустили статистику выполнения запроса, и ваш код должен выглядеть следующим образом:
<?php
$ligacao = new mysqli("localhost","starwmjz_mike","PASSWORD","starwmjz_pallet");if($ligacao->connect_error){
die("Error:" . $ligacao->connect_errno . "," . $ligacao->connect_error);
}
$ligacao->set_charset("utf8");
$tipQuery = $ligacao->query("SELECT tipQuote FROM tips ORDER BY rand() limit 1");
?>
<div id="col1">
<!-- Column one content beginning -->
<!-- INCLUDEPHP http://pallet-town.net/backend/ligacao.php -->
<!-- PHP -->
while ($obj=$ligacao->fetch_object($tipQuery))
{
printf("%s \n",$obj->tipQuote);
}
<!-- ENDPHP -->
<!-- Column one content end -->
</div>
Вы пропустите один шаг, прежде чем повторить результат запроса.
Попробуйте это так:
<?php
$ligacao = new mysqli("localhost","starwmjz_mike","PASSWORD","starwmjz_pallet");if($ligacao->connect_error){
die("Error:" . $ligacao->connect_errno . "," . $ligacao->connect_error);
}
$ligacao->set_charset("utf8");
$tipQuery = $ligacao->query("SELECT tipQuote FROM tips ORDER BY rand() limit 1");
$obj = $ligacao->fetch_object($tipQuery);
?>
<div id="col1">
<!-- Column one content beginning -->
<!-- INCLUDEPHP http://pallet-town.net/backend/ligacao.php -->
<!-- PHP -->
echo $obj->tipQuote;
<!-- ENDPHP -->
<!-- Column one content end -->
</div>
В конце концов я нашел ответ, если у кого-то есть такая же проблема, это сработало для меня:
$result = mysqli_query($ligacao,"SELECT * FROM YOUR-TABLE-NAMe ORDER BY rand() LIMIT 1");
while($row = mysqli_fetch_array($result)) {
echo $row['YOUR-ROW-NAME'];
}
mysqli_close($ligacao);
Таким образом, чтобы получить доступ к внешнему mysql, вам нужен один PHP-файл в корневой папке форумов.
Чтобы включить в свой код, просто добавьте <!-- INCLUDEPHP YOUR-FILE.php -->
куда вы хотите, чтобы информация была вставлена.
В данном конкретном случае окончательный код php-файла:
<?php
$ligacao = new mysqli("YOUR-HOST","DATABASE-USER","PASSWORD","DATABASE-NAME");if($ligacao->connect_error){
die("Error:" . $ligacao->connect_errno . "," . $ligacao->connect_error);
}
$ligacao->set_charset("utf8");$result = mysqli_query($ligacao,"SELECT * FROM YOUR-TABLE-NAME ORDER BY rand() LIMIT 1");
while($row = mysqli_fetch_array($result)) {
echo $row['YOUR-ROW-NAME'];
}
mysqli_close($ligacao);
?>