mysql — PHP, хотя цикл идентификаторов работает только с первым идентификатором

В настоящее время я создаю легкую платформу для блогов с хорошим дизайном материалов, но столкнулся с проблемой. У меня есть таблица с идентификаторами, и я хочу изменить значение public в своей таблице, чтобы вы могли скрывать статьи из блога, для этого я сделал цикл, но он работает только с первым идентификатором, но не с другими идентификаторами. Вот мой код:

        try {
if (isset($_POST['submit'])) {
$stmt = $db->query('SELECT postID FROM blog_posts ORDER BY postID DESC');

while ($row = $stmt->fetch()) {
// set public based on the submitted value from your form
$public = empty($_POST['public'][$row['postID']]) ? 0 : 1;

// do the update
$stmt = $db->prepare('UPDATE blog_posts SET public = ? WHERE postID = ?');
$stmt->execute(array($public, $row['postID']));
header('Location: index.php');
}
}
} catch (PDOException $e) {
echo $e->getMessage();
}

Если это будет полезно Вот моя полная страница PHP, также моя полностью загруженная страница может быть найдена Вот

Заранее спасибо.

1

Решение

Пожалуйста, поставьте это header('Location: index.php'); вне цикла while и не переопределяют $stmt вместо этого используйте другой:

//.......
//.......
while ($row = $stmt->fetch()) {

// set public based on the submitted value from your form
$public = empty($_POST['public'][$row['postID']]) ? 0 : 1;

// do the update
//Create another statement
$stmt2 = $db->prepare('UPDATE blog_posts SET public = ? WHERE postID = ?');
$stmt2->execute(array(
$public,
$row['postID']
));
}

header('Location: index.php');
//.......
//.......
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]