Я использую while($stmt->fetch())
, чтобы зацикливать результаты, полученные из MySQL Query, и при определенных условиях я получаю только один результат.
Я предполагаю, что это потому, что у меня есть 2 $stmt
. но я подумал, что такая поддержка была поддержана. Наверное, я делаю ошибку новобранец, я слишком долго привык к незаготовленным заявлениям!
$db = mysqlConnect();
$stmt = $db->stmt_init();
$stmt->prepare("SELECT id, uploadtype FROM uploads ORDER BY displayorder DESC");
$stmt->execute();
$stmt->bind_result($id, $uploadtype);
while ($stmt->fetch()) {
echo 'ID = ' . $id . '<br />';
if ($uploadtype == 'single') {
$stmt->prepare("SELECT title, description FROM singles WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($title, $description);
$stmt->fetch();
?>
Title: <? echo $title; ?><br />
Description: <? echo $description; ?><br />
<a href="edit.php?id=<? echo $id; ?>">Edit</a><br />
<?
}
}
Это единственный идентификатор эха. Я предполагаю, что это проблема, потому что, когда я использую следующее, я получаю все идентификаторы эхом.
$db = mysqlConnect();
$stmt = $db->stmt_init();
$stmt->prepare("SELECT id, uploadtype FROM uploads ORDER BY displayorder DESC");
$stmt->execute();
$stmt->bind_result($id, $uploadtype);
while ($stmt->fetch()) {
echo 'ID = ' . $id . '<br />';
}
Как я могу обойти эту проблему? Я думаю, что я не понимаю готовых заявлений совершенно правильно.
EDIT:
Теперь это изменено, но получение invalid object or resource mysqli_stmt
on line start <error>
.
$db = mysqlConnect();
$stmt = $db->stmt_init();
if (!$limit) {
$stmt->prepare("SELECT id FROM uploads WHERE uploadtype = 'youtube' ORDER BY displayorder DESC");
} else {
$stmt->prepare("SELECT id FROM uploads WHERE uploadtype = 'youtube' ORDER BY displayorder DESC LIMIT 0, ?");
$stmt->bind_param('i', $limit);
}
$stmt->execute();
$stmt->bind_result($id);
while ($stmt->fetch()) {
$stmt2 = $db->stmt_init();
$stmt2->prepare("SELECT title, description, url FROM youtube WHERE id = ?");
<error>$stmt2->bind_param('i', $id);
<error>$stmt2->execute();
<error>$stmt2->bind_result($title, $description, $url);
<error>while ($stmt2->fetch()) {
$title = stripslashes($title);
$description = stripslashes($description);
$url = stripslashes($url);
?>
<class id="item">
<?
if ($gettitle) echo 'Title: ' . $title . '<br/>';
if ($getdescription) echo 'Description: ' . $description . '<br />';
?>
<iframe width="560" height="315" src="<? echo $url; ?>" frameborder="0" allowfullscreen></iframe>
</class><br />
<?
}
}
Согласовано. Ваш единственный цикл цикла один раз перед переписыванием содержимого $ stmt. – Kevin
Думал, что это может быть что-то вроде этого. Он работает на одной странице, но я продолжаю получать недопустимый объект или ресурс mysqli_stmt' на определенных страницах. Я отредактирую его, появится еще один код и строки ошибок. –
Также нужен новый '$ db' (называемый' $ db2'). Спасибо за помощь! –