@jazzman7

Почему функция не видит запрос в базу данных?

Доброго времени суток.
Есть три файла.
Файл с подключением к бд, файл с функциями, индекс (где подключаются два вышеупомянутых файла).
Решил перенести вывод контента в функцию, так как он у меня много где выводится подобным образом.
Запросы у меня идут с индекса, в функцию передаю значение > все работает.
Тут потребовалось выполнить запрос из функции, а он не выполняется, ломал долго голову, установил что почему то в функции отсутствует подключение. Пока подключение в функцию не воткну, ничего не происходит. Почему так и что делать ?

Файл бд
<?
 $host = 'localhost';
    $db   = 'kat';
    $user = 'mysql';
    $pass = 'mysql';
    $charset = 'utf8mb4';

    $dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $pdo = new PDO($dsn, $user, $pass, $opt);
	
?>


Кусок кода из индекса
$pdo->exec("set names utf8mb4");
$top = $pdo->prepare("SELECT * FROM `sait` WHERE `status` = '1' AND `status` = '1' ORDER BY `time_reg` DESC LIMIT ?, ?");
$top -> bindValue(1, $start, PDO::PARAM_INT);
$top -> bindValue(2, $page_top, PDO::PARAM_INT);
$top -> execute();
$topc = $top->rowCount();

if ($topc!= 0){
	
cont($top);
?>


Функция
function cont($top) {

	$top = $top->fetchAll();
foreach ($top as $row) {
/* Этот запрос не выполняется, без него все работает*/
$category = $pdo->prepare("SELECT * FROM `cat` WHERE `id` = ?");
$category->execute(array($row['category']));
$category = $category->fetch();



?>

<div class="col-md-6 col-xs-12">   <a href="/info/<?=$row['id']?>.html"><div class="cal <? if ($row['vip'] > time()) { echo 'calvip';} ?>">
<div class="tabcal">
<div class="ava" style="background-image: url(/images/ava/<?=$row['id']?>.jpg)"></div>
<div class="tabcalcont">
<h3><?=$row['name']?> <? echo ($row['category']==7 ? '<img src="/images/18.png" alt="*">':'') .''; ?> <? if ($row['vip'] > time()) { echo top();} ?></h3>
<p>@<?=$row['url']?></p>
<p><i class="fa fa-tags" aria-hidden="true"></i> <?=$category['name']?></p>

</div></div>
<div class="calcont">

<p><?
                if(mb_strlen($row['about']) > 200){
$text = mb_substr($row['about'], 0, 200, 'utf-8');
echo strip_tags($text);
}else{
echo strip_tags($row['about']);
} ?></p>
<div class="chel"><i class="fa fa-user-o" aria-hidden="true"></i> 
<?= number_format($row['chel'], 0,'',' '); ?></div>


<div class="clear"></div>
</div>

</div></a></div>
	<?



} 
}
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
DevMan
@DevMan
потому что нет $pdo в функции.
Как запустить pdo из функции?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽