Сделать Insert в базе данных с помощью php


хорошие,

я пытаюсь добавить оператор в базу данных, я делаю это из insert. У меня есть пять переменных, идентификатор, имя, описание, изображение, и хочу ли я показать новости или нет. Соединения с базой данных я уже проверил, что они сделаны правильно и тому подобное, что не удается, так это то, что он не делает оператор INSERT

хорошо

это php, где я пытаюсь ввести данные в BD, data2.php

if($_POST['add'] == 1) {
    echo "Add";
    $sql = "INSERT INTO noticias (id, name, description, img, show) VALUES (:id, :name, :description, :img, :show)";
    $query = $db->prepare( $sql );
    $imgfile="http://placehold.it/140x120/";
    $image=$_FILES['image']['name'];
    if ($image){
        $extension = getExtension($image);
        $extension = strtolower($extension);
        if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) {
            echo "Invalid file type";
        } else {
            $size=filesize($_FILES['image']['tmp_name']);
            if ($size > MAX_SIZE*1024) {
                echo "File size error";
            } else {
                $temp=resizeImage($_FILES['image']['tmp_name'],140,120);
                $filename = $url.".".$extension;
                $imgfile="./assets/img/noticias/".$filename;
                imagejpeg ( $temp, $imgfile );
            }
        }
    }
    $id=NULL;
    if ($_POST['enabled'] == "on") {
        $show = 1;
    } else {
        $show = 0;
    }
        $query->execute( array( 
                            ':id'=>$id,
                            ':name'=>$_POST['name'],
                            ':description'=>$_POST['description'],
                            ':img'=>$imgfile,
                            ':show'=>$show ) );

    foreach($db->query ("SELECT MAX(id) AS id FROM cursos") as $row) {
        $id=$row['id'];
    }
    echo ($id);
    echo ($form_data['convs']);
    header('Location: panel.php');

}

и здесь код html, где пользователь вводит информацию, panel.php:

  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#añadirCurso">Añadir Noticia</button>

<div class="modal fade" id="añadirCurso" role="dialog">
<div class="modal-dialog">
  <form enctype="multipart/form-data" role="form" method="post" action="data2.php">
    <input type="hidden" name="add" id="add" value="1">   
    <input type="hidden" name="mod" id="mod" value="0">
    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Añadir Noticia</h4>
      </div>
      <div class="form-group">
          <label for="name">Nombre</label>
          <input type="text" class="form-control" id="name" name="name" value="" placeholder="Nombre de la noticia">
      </div>
      <div class="form-group">
          <label for="description">Descripción</label>
          <textarea class="form-control rte-zone" name="description" id="description" placeholder="Descripción de la noticia" rows="3"></textarea>
      </div>
      <div class="form-group">
          <label for="image">Imagen</label>
          <input type="file" id="image" name="image">
      </div>
      <div class="checkbox">  
          <input type="checkbox" id="enabled" name="enabled" checked><label for="enabled">Mostrar noticia</label>
      </div>
      <div class="modal-footer">
        <button type="submit" class="btn btn-default">Enviar</button>
        <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
      </div>
    </div>
  </form>

</div>

это ошибки:

mod_fcgid: stderr: PHP Notice:  Undefined variable:data2.php on line 15

mod_fcgid: stderr: PHP Fatal error:  Call to a member function prepare() on null on line 15 

строка 15:

$query = $db->prepare( $sql );
Author: CMorillo, 2017-08-28

2 answers

В сообщении об ошибке говорится, что ваша переменная $db, которая должна быть экземпляром класса PDO, во время вызова метода PrEP() равна null.

Проверьте, что вы эффективно создаете этот класс перед вызовом метода.

 4
Author: carnau, 2017-08-28 10:04:34

Вы должны уточнить, в какие столбцы вы хотите вставить данные:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...) 

В вашем случае (вам нужно будет указать правильное имя ваших столбцов):

$sql = "INSERT INTO noticias (id, nombre, descripcion, imagen, show) VALUES (:id, :name, :description, :img, :show)";

Ссылка: https://www.w3schools.com/php/php_mysql_insert.asp

 1
Author: DanielGS, 2017-08-28 09:34:15