How to check the valid of the PostgreSQL datetime format string taken from user?










1















I'm using PostgreSQL 9.6 and PHP 7.x.



I want to check the validity of the PostgreSQL date time format received from the user.
I looked at this document.



I tried that



<?php
$format = 'YYYY-MM-DD';
$query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

if($query->execute()) {
echo 'valid';
else
echo 'invalid';

//Result valid;

<?php
$format = 'abcdefg';
$query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

if($query->execute()) {
echo 'valid';
else
echo 'invalid';
//Result valid


It didn't work as I wanted.



Because query works regardless if the format is valid or not.



Example



//sql
SELECT TO_CHAR(NOW(), 'YYYY-MM-DD') AS DATETIME;
//query executed
//Result
2018-11-16

//sql
SELECT TO_CHAR(NOW(), 'abcdefg') AS DATETIME;
//query executed
//Result
aad6efg


My question is how to check this.










share|improve this question




























    1















    I'm using PostgreSQL 9.6 and PHP 7.x.



    I want to check the validity of the PostgreSQL date time format received from the user.
    I looked at this document.



    I tried that



    <?php
    $format = 'YYYY-MM-DD';
    $query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

    if($query->execute()) {
    echo 'valid';
    else
    echo 'invalid';

    //Result valid;

    <?php
    $format = 'abcdefg';
    $query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

    if($query->execute()) {
    echo 'valid';
    else
    echo 'invalid';
    //Result valid


    It didn't work as I wanted.



    Because query works regardless if the format is valid or not.



    Example



    //sql
    SELECT TO_CHAR(NOW(), 'YYYY-MM-DD') AS DATETIME;
    //query executed
    //Result
    2018-11-16

    //sql
    SELECT TO_CHAR(NOW(), 'abcdefg') AS DATETIME;
    //query executed
    //Result
    aad6efg


    My question is how to check this.










    share|improve this question


























      1












      1








      1








      I'm using PostgreSQL 9.6 and PHP 7.x.



      I want to check the validity of the PostgreSQL date time format received from the user.
      I looked at this document.



      I tried that



      <?php
      $format = 'YYYY-MM-DD';
      $query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

      if($query->execute()) {
      echo 'valid';
      else
      echo 'invalid';

      //Result valid;

      <?php
      $format = 'abcdefg';
      $query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

      if($query->execute()) {
      echo 'valid';
      else
      echo 'invalid';
      //Result valid


      It didn't work as I wanted.



      Because query works regardless if the format is valid or not.



      Example



      //sql
      SELECT TO_CHAR(NOW(), 'YYYY-MM-DD') AS DATETIME;
      //query executed
      //Result
      2018-11-16

      //sql
      SELECT TO_CHAR(NOW(), 'abcdefg') AS DATETIME;
      //query executed
      //Result
      aad6efg


      My question is how to check this.










      share|improve this question
















      I'm using PostgreSQL 9.6 and PHP 7.x.



      I want to check the validity of the PostgreSQL date time format received from the user.
      I looked at this document.



      I tried that



      <?php
      $format = 'YYYY-MM-DD';
      $query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

      if($query->execute()) {
      echo 'valid';
      else
      echo 'invalid';

      //Result valid;

      <?php
      $format = 'abcdefg';
      $query = $db->prepare("SELECT TO_CHAR(NOW(), '" . $format . "') AS DATETIME");

      if($query->execute()) {
      echo 'valid';
      else
      echo 'invalid';
      //Result valid


      It didn't work as I wanted.



      Because query works regardless if the format is valid or not.



      Example



      //sql
      SELECT TO_CHAR(NOW(), 'YYYY-MM-DD') AS DATETIME;
      //query executed
      //Result
      2018-11-16

      //sql
      SELECT TO_CHAR(NOW(), 'abcdefg') AS DATETIME;
      //query executed
      //Result
      aad6efg


      My question is how to check this.







      php sql postgresql postgresql-9.6






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 16 '18 at 12:48









      Laurenz Albe

      51.8k103052




      51.8k103052










      asked Nov 16 '18 at 9:33









      MelihMelih

      186




      186






















          1 Answer
          1






          active

          oldest

          votes


















          0














          That is because it is a valid format.



          You should probably define what you consider a valid format and perhaps compose a regular expression for that.



          By the way, your code is vulnerable to SQL injection, which is particularly dangerous since you are trying to verify unreliable data here.






          share|improve this answer























          • I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

            – Melih
            Nov 16 '18 at 14:36











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53334990%2fhow-to-check-the-valid-of-the-postgresql-datetime-format-string-taken-from-user%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          That is because it is a valid format.



          You should probably define what you consider a valid format and perhaps compose a regular expression for that.



          By the way, your code is vulnerable to SQL injection, which is particularly dangerous since you are trying to verify unreliable data here.






          share|improve this answer























          • I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

            – Melih
            Nov 16 '18 at 14:36















          0














          That is because it is a valid format.



          You should probably define what you consider a valid format and perhaps compose a regular expression for that.



          By the way, your code is vulnerable to SQL injection, which is particularly dangerous since you are trying to verify unreliable data here.






          share|improve this answer























          • I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

            – Melih
            Nov 16 '18 at 14:36













          0












          0








          0







          That is because it is a valid format.



          You should probably define what you consider a valid format and perhaps compose a regular expression for that.



          By the way, your code is vulnerable to SQL injection, which is particularly dangerous since you are trying to verify unreliable data here.






          share|improve this answer













          That is because it is a valid format.



          You should probably define what you consider a valid format and perhaps compose a regular expression for that.



          By the way, your code is vulnerable to SQL injection, which is particularly dangerous since you are trying to verify unreliable data here.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 16 '18 at 12:46









          Laurenz AlbeLaurenz Albe

          51.8k103052




          51.8k103052












          • I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

            – Melih
            Nov 16 '18 at 14:36

















          • I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

            – Melih
            Nov 16 '18 at 14:36
















          I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

          – Melih
          Nov 16 '18 at 14:36





          I think you are right. I'm going to look at ways to use regular expression. By the way, this isn't my main code. I've written to test my way to mind.

          – Melih
          Nov 16 '18 at 14:36



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53334990%2fhow-to-check-the-valid-of-the-postgresql-datetime-format-string-taken-from-user%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Top Tejano songwriter Luis Silva dead of heart attack at 64

          政党

          天津地下鉄3号線