Допустим, у меня есть готовое заявление.Запрос, который он готовит, не имеет значения.Я получаю результат, как описано выше (я не могу показать реальный код, потому что я не хочу его показывать. Пожалуйста, сконцентрируйтесь на проблеме, а не на бессмысленных примерах), и я получаю
Неустранимая ошибка: Вызов функции-члена bind_param () для необъекта в ... error.Ошибка вызвана в вызываемом объекте.
<?php
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
class table2Info{
private $mysqli;
public function __construct($_mysqli){
$this->mysqli = $_mysqli;
}
public function getInfo($id)
{
$db = $this->mysqli->prepare('SELECT info FROM table2 WHERE id = ? LIMIT 1');
$db->bind_param('i',$db_id);
$db_id = $id;
$db->bind_result($info);
$db->execute();
$db->fetch();
$db->close();
return $info;
}
}
$t2I = new table2Info($mysqli);
$stmt->prepare('SELECT id FROM table1 WHERE name = ?');
$stmt->bind_param('s',$name);
$name = $_GET['name'];
$stmt->bind_result($id);
$stmt->execute();
while($stmt->fetch())
{
//This will cause the fatal-error
echo $t2I->getInfo($id);
}
$stmt->close();
?>
Вопрос в следующем: есть ли способ сделать другое подготовленное утверждение, пока другое еще открыто?Это упростило бы код для меня.Я не могу решить это с помощью SQL JOIN или чего-то в этом роде, так должно быть.Теперь я собираю извлеченные данные в массив и перебираю их после $stmt->close();
, но это не очень хорошее решение.Почему я должен делать две петли, когда одна лучше?