Я исследовал онлайн, но большинство примеров или инструкций, кажется, не относятся к тому, что я пытаюсь выполнить.
Короче говоря, мой код должен выполнить следующее:
Хранимая процедура вызывается из моего php-скрипта, который возвращает набор данных, по которому я хочу пройти цикл, и создать строки в таблице (для целей онлайн-отображения). Однако одно из полей в моей таблице должно вызывать отдельную таблицу (даже не нужно использовать хранимую процедуру в первую очередь) для подсчета общего числа строк, затронутых идентификатором пользователя.
Мой скрипт ниже возвращает эту ошибку:
SQLSTATE [HY000]: общая ошибка: 2014 Невозможно выполнить запросы, когда другие небуферизованные запросы активны. Рассмотрите возможность использования PDOStatement :: fetchAll (). В качестве альтернативы, если ваш код работает только с mysql, вы можете включить буферизацию запросов, установив атрибут PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY.
Код:
<body>
<table border='0' cellpadding='0' cellspacing='1'>
<thead>
<tr bgcolor='#E0EBF1'>
<th>Agent NO</th>
<th>Comm Lvl</th>
<th>Agent Name</th>
<th>Address</th>
<th>parent_agent_name</th>
<th>Contacts</th>
<th>45 Day</th>
<th>STS</th>
</tr>
</thead>
<tbody>
<?php
$agetnumber = 123456789;
try {
$db = new PDO('mysql:host=localhost;dbname=DBNAME', 'USER', 'PW');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$stmt = $db->query('CALL hier($agentnumber)');
foreach($stmt as $row)
{
$sql = $db->query("SELECT AGENT FROM activity WHERE AGENT = '$row[AGTNO]");
$foundrows = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
echo sprintf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>",
$row["AGTNO"], $row["AGTCOMMLVL"],
$row["AGTFNAME"]."<br><i>Contracted: ".$row["KDATE"],
$row["parent_agent_id"],
$row["parent_agent_name"],
$row["commission_level"],
$foundrows,
$foot);
}
$db->commit();
}
catch (PDOException $e)
{
$db->rollback();
echo $e->getMessage();
exit;
}
Строки, влияющие на код:
$sql = $db->query("SELECT AGENT FROM activity WHERE AGENT = '$row[AGTNO]");
$foundrows = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
удаление их «избавляет» от ошибки, но я не могу получить переменную $ foundrows, которая мне нужна для каждого набора строк результатов.
Кто-нибудь когда-либо сталкивался с этой проблемой раньше?