Re: Formatting Date (m/d/yyyy) To Timestamp
| From: | Serge Fonville | Date: | Mon, 11 Jan 2021 21:58:43 +0000 |
| Subject: | Re: Formatting Date (m/d/yyyy) To Timestamp | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327404@lists.php.net to get a copy of this message | ||
>
> When I try : $stmp->bind_param('$des', '$d1', '$a',
> '$m', '$t', '$s');
> I get: Fatal error: Uncaught Error: mysqli_stmt::bind_param(): Argument #2
> cannot be passed by reference
What does that mean?
You are converting all values to strings, the whole idea is to maintain the
data type, so you should remove the quotes.
On top of that, you are using single quotes, so the values are not expanded
inside the string.
Kind regards/met vriendelijke groet,
Serge Fonville
http://www.sergefonville.nl
Op ma 11 jan. 2021 om 22:44 schreef Talin Sharma <talinsharma.in@gmail.com>:
> When I try : $stmp->bind_param('$des', '$d1', '$a',
> '$m', '$t', '$s');
> I get: Fatal error: Uncaught Error: mysqli_stmt::bind_param(): Argument #2
> cannot be passed by reference
>
> What does that mean?
> Thanks:
> Talin Sharma
>
>
> On Mon, Jan 11, 2021 at 12:44 PM Serge Fonville <serge.fonville@gmail.com>
> wrote:
>
>> What would I put where you have to tell what type of date(string,
>>> number?)
>>>
>> One of the benefits of prepared statements is that you do not need to
>> convert or specify data types. Since the mysqli library handles that for
>> you. It finds the datatype from the datatype of the variable and passes its
>> value to the database service.
>>
>> Kind regards/met vriendelijke groet,
>>
>> Serge Fonville
>>
>> http://www.sergefonville.nl
>>
>>
>> Op ma 11 jan. 2021 om 13:42 schreef Talin Sharma <
>> talinsharma.in@gmail.com>:
>>
>>> I can try this but if I use prepared statements, I have multiple fields
>>> to insert. What would I put where you have to tell what type of
>>> date(string, number?)
>>>
>>> Thanks:
>>> Talin Sharma
>>>
>>>
>>> On Mon, Jan 11, 2021 at 2:42 AM Serge Fonville <serge.fonville@gmail.com>
>>> wrote:
>>>
>>>> I tried and minimize your question to the following code:
>>>>
>>>> <?php
>>>>
>>>> $date_from_sheet = "1/1/2021";
>>>> // As you know the format of the date, it is easier to convert based on
>>>> that
>>>> $timestamp = DateTime::createFromFormat('d./m/Y', $date_from_sheet);
>>>>
>>>> // Instead of inserting the values inside the string, use bind
>>>> variables instead.
>>>> $query = "INSERT INTO some_table(date_field) values (?)";
>>>> // I'm assuming $mysqli is already instantiated elsewhere
>>>> $stmt = $mysqli->prepare($query);
>>>> // The only field in the query is the date field,
>>>> // so it is clear that the only parameter is the corresponding value
>>>> $stmt->bind_param($timestamp);
>>>> // The only remaining thing to do is execute it.
>>>> $stmt->execute();
>>>> ?>
>>>>
>>>> Does this enable you to solve your issue?
>>>>
>>>> I used the following sources:
>>>>
>>>> https://www.php.net/manual/en/mysqli-stmt.bind-param.php
>>>>
>>>> https://www.php.net/manual/en/datetime.createfromformat.php
>>>>
>>>> Kind regards/met vriendelijke groet,
>>>>
>>>> Serge Fonville
>>>>
>>>> http://www.sergefonville.nl
>>>>
>>>>
>>>> Op ma 11 jan. 2021 om 02:18 schreef Talin Sharma <
>>>> talinsharma.in@gmail.com>:
>>>>
>>>>> I have also tried: $d1 = date("Y-m-d H:i:s", strtotime($d)); But that
>>>>> returns random dates when I insert into the database... What is wrong?
>>>>>
>>>>>
>>>>> Thanks:
>>>>> Talin Sharma
>>>>>
>>>>>
>>>>> On Sun, Jan 10, 2021 at 7:10 PM Talin Sharma <talinsharma.in@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Also here is the excel sheet I am using for testing.
>>>>>> Thanks:
>>>>>> Talin Sharma
>>>>>>
>>>>>>
>>>>>> On Sun, Jan 10, 2021 at 7:05 PM Talin Sharma <
>>>>>> talinsharma.in@gmail.com> wrote:
>>>>>>
>>>>>>> I am attaching all of my code. How do I enter the timestamp to the
>>>>>>> database then?
>>>>>>>
>>>>>>> Thanks:
>>>>>>> Talin Sharma
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Jan 10, 2021 at 7:01 PM Serge Fonville <
>>>>>>> serge.fonville@gmail.com> wrote:
>>>>>>>
>>>>>>>> It doesn't seem to work. What I did: $d1 =
>>>>>>>> 'strtotime('1/1/2021'); echo
>>>>>>>>> $d1;' Echos: '980053200' That in human form is:
>>>>>>>>> 'November 30,
>>>>>>>>> -0001' Not what I want... any idea why?
>>>>>>>>
>>>>>>>> You are converting the timestamp to a string again using echo, this
>>>>>>>> outputs a unix epoch. You should instead treat $d1 as
>>>>>>>>
>>>>>>>> Perhaps if you share a bigger part of your code, it would be easier
>>>>>>>> to be of help.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Kind regards/met vriendelijke groet,
>>>>>>>>
>>>>>>>> Serge Fonville
>>>>>>>>
>>>>>>>> http://www.sergefonville.nl
>>>>>>>>
>>>>>>>>
>>>>>>>> Op ma 11 jan. 2021 om 00:51 schreef Talin Sharma <
>>>>>>>> talinsharma.in@gmail.com>:
>>>>>>>>
>>>>>>>>> It doesn't seem to work. What I did: $d1 =
>>>>>>>>> 'strtotime('1/1/2021'
>>>>>>>>> ); echo $d1;' Echos: '980053200' That in human
>>>>>>>>> form is: 'November
>>>>>>>>> 30, -0001' Not what I want... any idea why?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Thanks:
>>>>>>>>> Talin Sharma
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sun, Jan 10, 2021 at 6:30 PM Serge Fonville <
>>>>>>>>> serge.fonville@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Talin,
>>>>>>>>>>
>>>>>>>>>> Would
>>>>>>>>>> https://www.php.net/manual/en/function.strtotime.php solve
>>>>>>>>>> your conversion problem?
>>>>>>>>>>
>>>>>>>>>> Kind regards/met vriendelijke groet,
>>>>>>>>>>
>>>>>>>>>> Serge Fonville
>>>>>>>>>>
>>>>>>>>>> http://www.sergefonville.nl
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Op ma 11 jan. 2021 om 00:18 schreef Talin Sharma <
>>>>>>>>>> talinsharma.in@gmail.com>:
>>>>>>>>>>
>>>>>>>>>>> Hi All,
>>>>>>>>>>>
>>>>>>>>>>> I have a string: '1/1/2021'. I want to turn
>>>>>>>>>>> this into a
>>>>>>>>>>> timestamp for entering into MySql. I have tried
>>>>>>>>>>> everything I could find.
>>>>>>>>>>> Please let me know how to proceed.
>>>>>>>>>>>
>>>>>>>>>>> Also, let me know if you need more information.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks:
>>>>>>>>>>> Talin Sharma
>>>>>>>>>>>
>>>>>>>>>>