使用不同格式

时间:2016-09-28 07:09:08

标签: php mysql date

我有一个列名为db_datetime的表,其类型为datetime 日期在数据库中存储如下

enter image description here

对于搜索我使用日期选择器这个日期选择器的格式是这样的

09/19/2016 M/d/Y

我想在两个日期之间进行搜索,并使用下拉菜单搜索名称并搜索字符或数字 我使用这个代码,但问题是我使用STR_TO_DATE的日期,但它没有给我一个结果我所有的努力没有成功总是给我没有搜索结果,我有一个日期存储为什么我搜索 这是代码

if(isset($_POST['submit'])) {
    $search=mysqli_real_escape_string($conn,$_POST['txt_search']);
    $q = array();  
    $sql = "";     
    if(isset($_POST['txt_name']) && !empty($_POST['txt_name'])){  
    $name = mysqli_real_escape_string($conn,$_POST['txt_name']); 
    $q[] = " db_name='".$name."' ";      
    }  
    if(isset($_POST['txt_psd']) && !empty($_POST['txt_psd'])){  
    $psd=  mysqli_real_escape_string($conn,$_POST['txt_psd']); 
     $q[] = "STR_TO_DATE($psd, '%Y-%m-%d') like'%db_datetime%' ";    
    }   
    if(isset($_POST['txt_pdd']) && !empty($_POST['txt_pdd'])){  
    $pdd =  mysqli_real_escape_string($conn,$_POST['txt_pdd']); 
    $q[] = "STR_TO_DATE($pdd, '%Y-%m-%d') like'%db_datetime%' ";      
    }     
    $qq=array();
    if(isset($_POST['txt_search']) && !empty($_POST['txt_search'])){  
    $search =  mysqli_real_escape_string($conn,$_POST['txt_search']); 
    $qq[] = "db_name like '%".$search."%' "; 
    $qq[] = "db_datetime like '%".$search."%' "; 
    $qq[] = "db_user like '%".$search."%' "; 
    } 
    $first = true; 
    $second=true;
    foreach($q as $qu){  
        if($first){  
        $sql .= " where ".$qu;      
        $first = false;  
        }else{  
        $sql .= " and ".$qu;          
        }} 
       foreach($qq as $qu){  
        if($second){  
        $sql .= " where  ".$qu;      
        $second = false;  
        }else{  
        $sql .= " or ".$qu;          
        }}  
    $result=mysqli_query($conn,"SELECT * FROM tbl_login {$sql}")or die(mysqli_error($conn));

2 个答案:

答案 0 :(得分:2)

您可以将用户输入日期转换为PHP支持的Y-m-d格式,然后将该日期传递给mysql。

  

被修改

$userInput = '09/19/2016';
$date = DateTime::createFromFormat('m/d/Y', $userInput);
$newDate = $date->format('Y-m-d'); 
echo $newDate; //output will be : 2016-09-19

答案 1 :(得分:0)

您对STR_TO_DATE函数的想法是错误的。显然,它需要输入日期格式,而不是输出(已知)。所以以下内容应该有效

STR_TO_DATE('$psd', '%m/%d/%Y') = db_datetime

请注意,您使用LIKE的想法也是错误的。

相关问题