【问题标题】:How to get the values in between the range by using where clause如何使用 where 子句获取范围之间的值
【发布时间】:2019-04-22 14:04:27
【问题描述】:

数据库结构我正在尝试在控制器(Codeigniter)中进行原始查询,并且我正在尝试从用户在 newDate 和 newDate2 上提供的范围中获取值。我的问题是它什么也不显示。怎么办我为此编写查询..我只想根据凭证号(vno)显示数量、产品名称、捆绑包...这是我尝试过的代码

控制器代码:

$startdate         = $this->input->post('SDate');
$enddate           = $this->input->post('EDate');
$date              = str_replace('/', '-', $startdate);
$newDate           = date("Y-m-d", strtotime($date));
$date2             = str_replace('/', '-', $enddate);
$newDate2          = date("Y-m-d", strtotime($date2));
$data['startdate'] = $startdate;
$data['enddate']   = $enddate;
$query             = $this->db->query('SELECT `vno`,`Prdtname`,`Qty`,`bundle` FROM purchaseitem WHERE billdate >= "$newDate"AND billdate <= "$newDate2" ORDER by `vno`')->result_array();
$data['query']     = $query;

查看代码:

<?php foreach ($query as $row): ?>
                                            <tr><td></td><td></td><td></td><td></td>
                                        <td><?=$row['Prdtname'];?></td>
                                        <td><?=$row['Qty'];?></td>
                                        <td><?=$row['bundle'];?></td>

                                        <?php endforeach ?> 

【问题讨论】:

  • 您可以打印您的查询并在此处发布吗?
  • 嗨!您的日期如何存储在数据库中?您不需要在日期中添加 H:i:s 吗?
  • @Yogendrasinh 我在 phpmyadmin 中尝试的这个查询没有得到任何值
  • @Eva 我只存储日期
  • 您能否显示您使用的实际日期(来自数据库和$newDate 中的日期)以及数据库值的数据类型。

标签: php mysql codeigniter select


【解决方案1】:

将您的查询更改为以下查询并检查。

您必须以单引号或双引号传递日期。

$query = $this->db->query('SELECT `vno`,`Prdtname`,`Qty`,`bundle` FROM purchaseitem WHERE billdate >= "'.$newDate.'" AND billdate <= "'.$newDate2.'" ORDER by `vno`')->result_array();

如果仍有问题,请告诉我。

【讨论】:

    【解决方案2】:

    你可以使用Between

    SELECT `vno`,`Prdtname`,`Qty`,`bundle` FROM purchaseitem WHERE billdate BETWEEN "$newDate" AND "$newDate2" ORDER by `vno`
    

    【讨论】:

    • 感谢您的回复..但我没有得到任何价值
    【解决方案3】:

    如果您只存储日期,我会尝试使用 unix 时间戳。

    $snewsDate = strtotimr($startdate);
    $newDate2 = strtotime($enddate);
    
    SELECT `vno`,`Prdtname`,`Qty`,`bundle` FROM purchaseitem WHERE billdate BETWEEN 
    UNIX_TIMESTAMP($newDate) AND UNIX_TIMESTAMP($newDate2) ORDER by `vno
    

    【讨论】:

    • 感谢您的回复..但我没有得到任何结果
    【解决方案4】:

    试试这个:

    $startdate         = $this->input->post('SDate');
    $enddate           = $this->input->post('EDate');
    $newDate           = date_format(date_create($startdate),"Y-m-d");
    $newDate2          = date_format(date_create($enddate),"Y-m-d");
    $data['startdate'] = $startdate;
    $data['enddate']   = $enddate;
    $query             = $this->db->query("SELECT vno,Prdtname,Qty,bundle FROM purchaseitem WHERE billdate BETWEEN '$newDate' AND '$newDate2' ORDER by vno")->result_array();
    $data['query']     = $query;
    

    【讨论】:

    • 感谢您的回复..但没有得到回复
    • date_format() 期望参数 1 为 DateTimeInterface,如果收到此错误且不打印任何内容,则为布尔值
    • 请分享您的数据库快照
    • 添加到我的帖子中
    • 你没有得到数据的地方,我认为问题出在view。分享您的视图编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2018-01-08
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多