简体   繁体   中英

How can i take value from input and add to Sql statement when page reload in php?

Example

<div>
   <label>From</label>
   <input type=date name=from value="12-12-2017">
   <label>To</label>
   <input type=date name=to value="29-12-2017">
</div>


$query = $conn->prepare("SELECT * FROM Users WHERE age BETWEEN **From** and **To**")
$query->execute()

And How can i take value from input and add to Sql statement when page reload first time? Thanks in advance

This is a working example of code that will submit only the first time.

Since only PHP/MySQLi are tagged we will go with an example where the user has to press a button when he is finished inputting dates.

<?php
// session_start() has to be the first line of code
session_start();

$con = new mysqli($servername, $username, $password, $dbname);

// if there is NOT a valid POST request (means it is like a first visit)
if (!$_POST)
{
     // if the session variable is set unset it
     if(isset($_SESSION['beenHere'])) unset($_SESSION['beenHere']);

     echo 'Status: This is a fresh start.<br/>';
}
else if(isset($_POST['from']) && isset($_POST['to']) && 
   !empty($_POST['from']) && !empty($_POST['to']) && 
   !isset($_SESSION['beenHere']))
{
    // set the session variable to an arbitrary value, it's important it is set
    $_SESSION['beenHere'] = 'This is the first submit';
    // prepare the statement
    $stmt = $con->prepare("SELECT * FROM Users WHERE age > ? AND age < ?");
    // turn the input variables into proper date format and bind the to the ?
    // dates are considered strings in prepared statements
    $stmt->bind_param("ss", date('Y-m-d',strtotime($_POST['from'])), date('Y-m-d',strtotime($_POST['to'])));
    $stmt->execute();

    // Here you list all the output columns that you have. I only listed two example columns.
    $stmt->bind_result($name, $age);
    // loop for each returned row
    while ($stmt->fetch())
    {
        // print the results
        printf ("%s %s\n", $name, $age);
    }
}
?>

<!-- Leave the action empty to POST to self -->
<form action="" method="POST">
  <div>
     <label>From</label><input type="date" name="from" value="" />
     <label>To</label><input type="date" name="to" value="" />
  </div>
  <input type="submit" value="clickToEnter" />
</form>

NOTE: For more advanced examples you could resort to javascript/jQuery to be able to set the session variable client side. Then you would not need to POST because you could store valuable information in the $_SESSION and check on page load.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM