Как получить значения между диапазонами с помощью предложения where - PullRequest
0 голосов
/ 20 ноября 2018

Структура базы данных enter image description here Я пытаюсь выполнить необработанный запрос в контроллере (Codeigniter) и пытаюсь получить значения из диапазона, предоставленного пользователем для newDate и newDate2..Моя проблема в том, что этоничего не отображается .. Как мне написать запрос для этого .. Я просто хочу отобразить количество, название продукта, комплект в соответствии с voucherno (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 ?> 

Ответы [ 4 ]

0 голосов
/ 20 ноября 2018

Измените свой запрос на запрос ниже и проверьте.

Вы должны указать дату в одинарной или двойной кавычке.

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

Дайте мне знать, если проблема все еще существует.

0 голосов
/ 20 ноября 2018

Если вы сохраняете только дату, я бы попытался использовать метку времени 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
0 голосов
/ 20 ноября 2018

Попробуйте это:

$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;
0 голосов
/ 20 ноября 2018

Вы можете использовать Между

SELECT `vno`,`Prdtname`,`Qty`,`bundle` FROM purchaseitem WHERE billdate BETWEEN "$newDate" AND "$newDate2" ORDER by `vno`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...