@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>
	<?



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

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

Похожие вопросы