Почему мой запрос UPDATE не работает? MySQL

0

Я работаю над сайтом блога, и сейчас я застрял в создании страницы редактирования блога. Почему-то мой запрос UPDATE моего блога не работает, и я не могу понять, почему он не работает. Я не получаю сообщение об ошибке. Это просто ничего не обновляет.

Я собираю данные из старого блога и вставляю его в свою форму. И затем я пытаюсь обновить его, используя мой запрос на обновление.

Это мой код:

aanpassen.php

    <?php

    $error=false;
    include_once('includes/connection.php');
    include_once('includes/article.php');

    $article = new Article;


    if ( isset( $_POST ['id'], $_POST['title'], $_POST['content'] ) ) {

        $id = $_POST ['id'];
        $title = $_POST['title'];
        $content = nl2br( $_POST['content'] );

        if (empty($title) || empty($content) || empty($id)){

            $error='All fields are required!';

        } else {
$query = $pdo->prepare("UPDATE articles SET article_title = :title, 
                        article_content = :content WHERE id=:id");
            if( $query ){
$id = $_POST ['id'];
$query->bindValue(':title', $title);
$query->bindValue(':content', $content);
$query->bindValue(':id', $id);
$query->execute();
                header( sprintf( 'Location: index.php?status=%s', $result ? 'ok' : 'failed' ) );
            } else {
                exit('bad foo - unable to prepare sql query');
            }
        }
    }

    if ( isset( $_GET['id'] ) ) {
        $id = $_GET['id'];
        $data = $article->fetch_data( $id );
    } else {
        header('Location: index.php');
        exit();
    }

?>

<form action="aanpassen.php" method="post" autocomplete="off">
    <input type="hidden" name="id" value="<?php echo $id; ?>" />
    <input type="text" name="title" class="titleform" placeholder="Blog naam" value="<?php echo $data['article_title']; ?>" />
    <textarea name="content" id="summernote" rows="15" cols="50"><?php echo $data['article_content'] ?></textarea>
    <input type="submit" class="buttonclass" value="Aanmaken" />
</form>
<?php
if ($error)
    printf('<h1>%s</h1>', $error);
?>

connection.php

<?php 
try {
$pdo = new PDO('mysql:host=localhost;dbname=cms', 'root', 'root');
} catch (PDOException $e) {
    exit('Database error.');
}
?>
  • 0
    bindValue() первый аргумент для bindValue() должен иметь : в начале вроде - :title
  • 0
    Вы не проверяете наличие ошибок после вызова метода execute (), поэтому вы не можете знать, правильно ли выполнен оператор sql.
Показать ещё 11 комментариев
Теги:
sql-update

2 ответа

0

вы пропустили ":" во всех аргументах bindValue. должно быть следующим:

$query->bindValue(':title', $title); $query->bindValue(':content', $content); $query->bindValue(':id', $id);

а также, if (empty($title) or empty($content) or empty($id)) это должно быть if (empty($title) || empty($content) || empty($id)) как это

  • 0
    Это ничего не делает для меня, к сожалению.
  • 0
    пожалуйста, проверьте обновленный ответ
Показать ещё 10 комментариев
0

Когда вы сначала получаете доступ к aanpassen.php, он в этом формате справа - aanpassen.php? Id = 1??

В противном случае ваш код кажется прекрасным, когда я его протестирую.

Просто измените:

$query->execute();
header( sprintf( 'Location: index.php?status=%s', $result ? 'ok' : 'failed' ) );

Для того, чтобы:

$success = $query->execute();
header( 'Location: index.php?status='.( $success ? 'ok' : 'failed' ) );exit();
  • 0
    Да, когда я захожу на страницу, aanpassen.php? Id = 1 - это URL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню