2017-02-02 1 views
0

Я получаю дату через javascript-функцию и отправляю ее в php, но я получаю SQLSTATE [HY093]: Недопустимый номер параметра: параметр не определен. как легко вставить дату и время. вот мой кодЯ пытаюсь вставить дату и время в sql-сервере, используя pdo в php

<div class="modal fade" id="add_new_event_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1"> 
<div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
      <h4 class="modal-title" id="myModalLabel1">Add New Event</h4> 
     </div> 
     <div class="modal-body"> 
      <div class="form-group"> 
       <label for="first_name">Event Name</label> 
       <input type="text" id="event_name" name="event_name" placeholder="EventName" class="form-control"/> 
      </div> 
      <div class="form-group"> 
       <label for="example-datetime-local-input">Date and time</label> 
       <div class="input-append date form_datetime" data-date=""> 
        <input size="16" type="text" value="" id="wedding_date" name="wedding_date" readonly class="form-control"> 
        <span class="add-on"><i class="icon-remove"></i></span> 
        <span class="add-on"><i class="icon-calendar"></i></span> 
        <script type="text/javascript"> 
         $(".form_datetime").datetimepicker({ 
         format: "dd mm yyyy hh:ii", 
         autoclose: true, 
         todayBtn: true, 
         startDate: "2017-01-14 10:00", 
         minuteStep: 10 
         }); 
        </script>    
       </div> 
      </div> 
     </div> 
     <div class="modal-footer"> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 
      <button type="button" class="btn model-button" id="AddEvent" OnClick="addEvent()">Save Changes</button> 
     </div> 

    </div> 
</div> 
</div> 

Мой сценарий здесь

function addEvent() 
{ 

    var event_name = $("#event_name").val(); 
    var wedding_date = $("#wedding_date").val(); 

    // Add event 
    $.post("ajax/addData.php", 
    { 
     event_name: event_name, 
     wedding_date: wedding_date 
    }, 
    function (data, status) 
    { 
     //console.log(data); 
     // close the popup 

     alert("Data: " + data + "\nStatus: " + status); 
     $("#add_new_event_modal").modal("hide"); 

     // read records again 
     readEvent(); 

     // clear fields from the popup 
     $("#event_name").val(""); 
     $("#wedding_date").val(""); 

    }); 
} 

и моя функция

if (isset($_POST['event_name']) && isset($_POST['wedding_date'])) 
{ 
    $event_name = $_POST['event_name']; 
    $wedding_date = $_POST['wedding_date']; 
    //$category_name = $_POST['category_name']; 
    $object = new crud(); 
    $object->addEvent($event_name, $wedding_date); 
} 

    public function addEvent($event_name, $wedding_date) 
    { 
     try 
     { 
      $stmt = $this->DB_conn->prepare("INSERT INTO event1(event_name, wedding_date) 
                   VALUES(:event_name, :wedding_date)"); 
       $stmt->bindparam(":eventname",$event_name); 
       $stmt->bindparam(":weddingdate",$wedding_date, PDO::PARAM_STR); 
       $stmt->execute(); 
     } 
     catch(PDOException $e) 
     { 
      echo $e->getMessage(); 
     } 

    } 

ответ

2

You Опечатка в:

$stmt->bindparam(":eventname",$event_name); 
$stmt->bindparam(":weddingdate",$wedding_date, PDO::PARAM_STR); 

Вашего PARAMS являются: event_name и: wedding_date так:

$stmt->bindparam(":event_name",$event_name); 
$stmt->bindparam(":wedding_date",$wedding_date, PDO::PARAM_STR); 
+0

Я импровизировал, что теперь получаю эту ошибку "SQLSTATE [22007]: [Microsoft] [драйвер ODBC 11 для SQL Server] [SQL Server] Ошибка конверсии при преобразовании даты и времени из строки. –

0

Вы используете 2 разные названия: 'wedding_date' против 'weddingdate'

0

Я нашел решение обособленно, что имена, чтобы вставить DateTime мы должны преобразовать его первый так пересмотренный запрос

public function addEvent($event_name, $wedding_date) 
    { 
     try 
     { 
      $stmt = $this->DB_conn->prepare("INSERT INTO event1(event_name, wedding_date) 
                  VALUES(:event_name, convert(datetime,:wedding_date, 5))"); 
       $stmt->bindparam(":event_name", $event_name); 
       $stmt->bindparam(":wedding_date", $wedding_date, PDO::PARAM_STR); 
       $stmt->execute(); 
     } 
     catch(PDOException $e) 
     { 
      echo $e->getMessage(); 
     } 

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