2016-09-25 2 views
0

Я пытаюсь создать систему новостей, поэтому мне просто нужно заполнить форму, чтобы опубликовать статью. К сожалению, кажется, что после многих попыток и методов мой запрос INSERT INTO, похоже, ничего не делает. Я работаю с двумя отдельными файлами: addnews.php (форма) и confirm.php. Я перевел все с французского, чтобы вам было легче читать.Мой запрос INSERT INTO не работает

Вот код формы, который работает отлично:

 <div id="centerbox" class="news1" align="center"> 
     <h1>Write a news</h1><br> 
     <form method="post" action="confirm.php"> 
      <p>Title:</p> 
      <input type="text" name="title"><br> 

      <p>Content:</p> 
      <textarea name="content" rows="8" cols="45"></textarea> 
      <br> 
      <p>Picture to display:</p> 
      <select name="picture"> 
       <option value="news">pics/INFO_IMPORTANTE.jpg</option> 
       <option value="event">pics/EVENEMENT.jpg</option> 
       <option value="helpme">pics/DEMANDE_AIDE.jpg</option> 
       <option value="helpyou">pics/PROPOSITION_AIDE.jpg</option> 
      </select> 

      <p>Your name:</p> 
      <input type="text" name="author"><br> 

      <input type="hidden" name="date" value="<?php echo date("d/m/Y"); ?>"> 

       <input type="submit" value="Confirm"> 
     </form> 
    </div> 

А вот код в confirm.php:

 <?php 
    try 
    { 
     $bdd = new PDO('mysql:host=localhost;dbname=L1-EVMAN', 'root', ''); 
    } 
    catch (Exception $e) 
    { 
     die('Error : ' . $e->getMessage()); 
    } 
    ?> 

     <?php 
     $title = htmlspecialchars($_POST['title']); 
     $picture = $_POST['picture']; 
     $content = htmlspecialchars($_POST['content']); 
     $author = htmlspecialchars($_POST['author']); 
     $time = date('d/m/Y'); 

     if (empty($title) OR empty($content) OR empty($author)) 
     { 
      echo '<font color="red">You have to fill everything !</font><br> 
      <a href="http://localhost/sourcemaster/addnews>Start over</a>'; 
     } 
     else 
     { 
      $addnews = $bdd->prepare('INSERT INTO news (id, title, pic, content, author, time) VALUES(NULL, :$title, :$picture, :$content, :$author, :$time)'); 
      $addnews->execute(array(
       'title' => $title, 
       'pic' => $picture, 
       'content' => $content, 
       'author' => $author, 
       'time' => $time 
       )); 

      echo 'The news has been added correctly.'; 
      } 
     ?> 

Проблема заключается в том, что, когда я заполнить форму и подтвердить, он говорит, что новости были добавлены, но ничего не отображается на странице новостей (это прекрасно работает, когда я вручную добавляю все в таблицу). Я действительно очень люблю все это, и я могу сказать, что я немного импровизировал в конце, следуя некоторым учебникам, которые я нашел, но ни один из них, похоже, мне не помогает.

Так что я прошу вас, ребята, о помощи. Не стесняйтесь спрашивать подробности или что-то еще.

спасибо!

+2

за одну вещь, которую вы должны установить соединение п.д.о. атрибуты огня исключения. '$ bdd-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' – Drew

+3

- это не то, как вы бы использовали заполнители в sql - это должно быть больше похоже на новости INSERT INTO (id, title, pic, content, автор, время) VALUES (NULL,: title,: picture,: content,: author,: time) 'и соответствующие записи в массиве params (где вы выполняете инструкцию) должны иметь двоеточие – RamRaider

+2

Удалить знак доллара в вашем связать параметры. То есть В вашем фактическом запросе вставки измените: $ title на: title. –

ответ

1

Неверный параметр запроса на ввод.

: $ название, например, будет расширяться: «все, что пользователь ввел»

И у вас нет такой параметр связан.

Вы должны удалить «$» из параметров связывания:

'INSERT INTO news (id, title, pic, content, author, time) VALUES(NULL, :title, :picture, :content, :author, :time) 
+0

Я удалил «$», и теперь у меня возникла фатальная ошибка: Fatal error: Uncaught exception «PDOException» с сообщением «SQLSTATE [22007]: Недопустимый формат даты и времени: 1292 Неверное значение даты и времени:« 25/09/2016 »для column 'time' в строке 1 'в C: \ wamp64 \ www \ sourcemaster \ confirm.php в строке 65 – Intronium

+0

По умолчанию для вставки даты в MySQL формат даты должен быть Ymd –

Смежные вопросы