我有一个页面(members.php)将日期发布到另一个页面(results.php)。使用下面的代码,我可以成功地从成员页面获取“to”和“from”变量。
<?php echo $_POST["to"]; ?>
<?php echo $_POST["from"]; ?>
我现在的问题是,我如何创建一个查询(在results.php中),以便仅显示上述变量中指定的日期的过滤结果?我是否也需要创建一个sql连接和SQL查询?
答案 0 :(得分:1)
如果日期为 <?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="test123"; // Database name
$con=mysql_connect("localhost","root","");
if(! $con)
{
die('Connection Failed'.mysql_error());
}
mysql_select_db("test123",$con);
if(isset($_FILES['files'])){
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['files']['name'][$key];
$file_size =$_FILES['files']['size'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
$file_type=$_FILES['files']['type'][$key];
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
$query="INSERT into upload_data (`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$file_name','$file_size','$file_type'); ";
$desired_dir="user_data";
if(empty($errors)==true){
if(is_dir($desired_dir)==false){
mkdir("$desired_dir", 0700); // Create directory if it does not exist
}
if(is_dir("$desired_dir/".$file_name)==false){
move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
}else{ // rename the file if another one exist
$new_dir="$desired_dir/".$file_name.time();
rename($file_tmp,$new_dir) ;
}
mysql_query($query);
}else{
print_r($errors);
}
}
if(empty($error)){
echo "Success";
}
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]" multiple/>
<input type="submit"/>
</form>
格式,则可以按照以下方式使用,否则您需要更改格式。
您可以执行以下操作:
YYYY-mm-dd
答案 1 :(得分:0)
您应该连接到数据库并比较这两个日期:
$dateOne = $_POST["from"];
$dateTwo = $_POST["to"];
如果更大的日期为0,那么您应始终将其设置为成功查询数据的最高日期:
if(empty($dateTwo))
{
$dateTwo = date("31-12-Y");
//If $dateTwo is null, than it will be 31/12/2015 otherwise query will now work well
}
然后你应该写这样的SQL查询:
"SELECT * FROM `table` where `dateOne` > '$dateOne' and `dateTwo` < '$dateTwo'";
在这种情况下,如果用户希望所有日期都大于dateOne但不检查dateTwo,则此查询将返回大于dateOne的所有数据,并且低于当前年份的最高日期(在我们的情况下,它是&#39; s 31/21/2015)。
答案 2 :(得分:0)
它不一定创建一个新的SQL连接,而只是一个新的查询(建议你已经连接到数据库)。在我看来,如果你想在两个日期之间显示结果。
我没有检查现有值或空值,因为已经给出了日期。
所以:
<?php $start_date = $_POST["from"];
$end_date = $_POST["to"];
//sql will be
$sql = "SELECT * FROM `your_table` WHERE `the_date_column` BETWEEN {$start_date} AND {$end_date}";
?>
请不要这样做,使用mysqli或PDO连接层,并尝试转义变量以防止sql注入或更好地关闭,使用预处理语句。