0

I am getting date through javascript function and sending it to php but I am getting SQLSTATE[HY093]: Invalid parameter number: parameter was not defined. how can I insert datetime easily. here is my code

<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>

My script here

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("");

    });
}

and my function

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();
        }

    }
Stuti Rauthan
  • 51
  • 1
  • 1
  • 7

3 Answers3

2

You have a typo in:

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

Your params are :event_name and :wedding_date so:

$stmt->bindparam(":event_name",$event_name);
$stmt->bindparam(":wedding_date",$wedding_date, PDO::PARAM_STR);
aperpen
  • 718
  • 7
  • 10
  • I've improvised that now getting this error "SQLSTATE[22007]: [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Conversion failed when converting date and time from string. – Stuti Rauthan Feb 02 '17 at 16:30
0

You use 2 different names: 'wedding_date' versus 'weddingdate'

Johan
  • 931
  • 9
  • 23
0

I found the solution apart that names, to insert datetime we have to convert it first so the revised query is

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();
        }

    }
Stuti Rauthan
  • 51
  • 1
  • 1
  • 7